changeset 388:4f6b63c25ab8

User/Group listing made fast by using imgsrc_cache()
author HIROSE Yuuji <yuuji@gentei.org>
date Mon, 28 Nov 2016 18:30:54 +0859
parents 2c928bb47c90
children 3074b635687a
files examples/common/default/default.css s4-funcs.sh
diffstat 2 files changed, 27 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/examples/common/default/default.css	Mon Nov 28 12:08:51 2016 +0859
+++ b/examples/common/default/default.css	Mon Nov 28 18:30:54 2016 +0859
@@ -221,6 +221,7 @@
 div.iconlist p._test	{background: #ffb6c1;} /* light pink */
 div.xy120x120 {min-width: 120px; min-height: 140px;}
 div.xy96x96 {min-width: 96px; min-height: 116px;}
+div.xy96x96 img {max-width: 96px;}
 div.xy50x50 {min-width: 50px; min-height: 70px;}
 div.moderated {background: rgba(255, 215, 0, 0.3);}		/* gold */
 body.moderated {background: #fffec4;} /* #faed8a */
--- a/s4-funcs.sh	Mon Nov 28 12:08:51 2016 +0859
+++ b/s4-funcs.sh	Mon Nov 28 18:30:54 2016 +0859
@@ -631,10 +631,10 @@
    pk=`gettblpkey $1`
    key=`query "select $pk from $1 where rowid=$3;"`
    getkey="(select $pk from $1 where rowid=$3)"
+   td=${4:-$tmpd}
+   [ -d $td ] || mkdir -p $td
    ### err "select $pk from $1 where rowid=$3" - key=$key '$4(tmp)'=$4
    for kt in s m; do
-     td=${4:-$tmpd}
-     [ -d $td ] || mkdir -p $td
      t=${1}_$kt
      for c in `gettbl_${kt}_cols $1`; do
        vcount=1			# count(val)
@@ -1929,6 +1929,9 @@
   getgrp="(select gname from grp where rowid=${rowid:--1})"
   sql="select a.rowid, a.$link,
 	coalesce(b.$gcs, a.$nm) as nick,
+	quote(a.$nm) as qname,
+	(SELECT val FROM ${tbl}_s
+	 WHERE $nm=a.$nm AND key='$iconcachekey') icon,
 	coalesce(b.gecos, a.$nm)  /* If group, concat (Nusers) */
 	  || case when a.$nm in (select gname from grp)
 		  then printf('(%d名)',
@@ -2011,20 +2014,35 @@
 
 ##  err ListEntry: `echo "$sql"\;`
   query "$sql limit $limit ${offset:+offset $offset};" \
-      | while IFS='|' read id lnk name gecos tag ownerp type; do
+      | while IFS='|' read id lnk name qname icon gecos tag ownerp type; do
 err name=$name owner=$ownerp lnk=$lnk
 err newlnk=$lnk regmode=$regmode
     icondir=$dir/$id
-    files=`getvalbyid $tbl profimg $id $icondir`
     # Pick up only last icon
     echo "<div class=\"iconlist xy$thumbxy $type\">
 	<p class=\"tag _$tag\">$tag</p>" \
 	| _m4 $tagconv
-    if [ -n "$files" ]; then
-      icon=`echo "$files"|tail -1`
-      iconhref2 "$icondir/$icon" "$hrb+$lnk" "$gecos"
+    if [ -z "NOSPEEDUP" ]; then
+      files=`getvalbyid $tbl profimg $id $icondir`
+      if [ -n "$files" ]; then
+	icon=`echo "$files"|tail -1`
+	iconhref2 "$icondir/$icon" "$hrb+$lnk" "$gecos"
+      else
+	iconhref "$dir/$deficon" "$hrb+$lnk" "$gecos"
+      fi
+    elif [ -n "$icon" -a -s "$icon" ]; then
+      iconhref2 "./$icon" "$hrb+$lnk" "$gecos"
     else
-      iconhref "$dir/$deficon" "$hrb+$lnk" "$gecos"
+      cond="$nm=$qname"
+      # err imgsrc_cache "$dir/list" ${tbl}_m "$cond" S
+      # err query "SELECT type FROM ${tbl}_m $cond LIMIT 1;"
+      img=`query "SELECT type FROM ${tbl}_m WHERE $cond AND key='profimg' LIMIT 1;"`
+      # err "img=[$img]"
+      if [ -n "$img" ]; then
+	imgsrc_cache "$dir/list" ${tbl}_m "$nm=$qname" S
+      else
+	iconhref2 "$dir/$deficon" "$hrb+$lnk" "$gecos"
+      fi
     fi
     echo "<br>$name${ownerp:+<br>$ownerp}"
     echo "</div>"

yatex.org