Fossil SCM

Improved /taglist page.

drh 2024-08-11 21:26 trunk
Commit 239a3fa34eebb1ce7423e2f56fcd2c93897b9051ad4fd106ea19f78c26b07a33
1 file changed +26 -12
+26 -12
--- src/tag.c
+++ src/tag.c
@@ -851,31 +851,45 @@
851851
login_anonymous_available();
852852
style_header("Tags");
853853
style_adunit_config(ADUNIT_RIGHT_OK);
854854
style_submenu_element("Timeline", "tagtimeline");
855855
@ <h2>Non-propagating tags:</h2>
856
+ @ <table class='sortable' data-column-types='ktn' data-init-sort='2'>
857
+ @ <thead><tr>
858
+ @ <th>Tag Name</th>
859
+ @ <th>Most Recent</th>
860
+ @ <th>Count</th>
861
+ @ </tr></thead><tbody>
862
+
856863
db_prepare(&q,
857
- "SELECT substr(tagname,5)"
858
- " FROM tag"
859
- " WHERE EXISTS(SELECT 1 FROM tagxref"
860
- " WHERE tagid=tag.tagid"
861
- " AND tagtype=1)"
862
- " AND tagname GLOB 'sym-*'"
863
- " ORDER BY tagname COLLATE uintnocase"
864
+ "SELECT substr(tagname,5),\n"
865
+ "row_number()OVER(ORDER BY tagname COLLATE uintnocase),\n"
866
+ "substr(datetime(max(mtime)),1,16),\n"
867
+ "count(*)\n"
868
+ "FROM tagxref JOIN tag USING(tagid)\n"
869
+ "WHERE tagname like 'sym-%%'\n"
870
+ "AND tagxref.tagtype=1\n"
871
+ "GROUP BY 1\n"
872
+ "ORDER BY 3 DESC;\n"
864873
);
865
- @ <ul>
866874
while( db_step(&q)==SQLITE_ROW ){
867875
const char *zName = db_column_text(&q, 0);
876
+ int rn = db_column_int(&q, 1);
877
+ const char *zDate = db_column_text(&q, 2);
878
+ int cnt = db_column_int(&q, 3);
879
+ @ <tr><td data-sortkey="%06x(rn)">\
868880
if( g.perm.Hyperlink ){
869
- @ <li>%z(chref("taglink","%R/timeline?t=%T",zName))
870
- @ %h(zName)</a></li>
881
+ @ %z(chref("taglink","%R/timeline?t=%T",zName))%h(zName)</a></td>\
871882
}else{
872
- @ <li><span class="tagDsp">%h(zName)</span></li>
883
+ @ <span class="tagDsp">%h(zName)</span></td>\
873884
}
885
+ @ <td>&nbsp;&nbsp;&nbsp;%h(zDate)&nbsp;&nbsp;&nbsp;</td>\
886
+ @ <td align="center">%d(cnt)</td></tr>
874887
}
875
- @ </ul>
888
+ @ </table>
876889
db_finalize(&q);
890
+ style_table_sorter();
877891
style_finish_page();
878892
}
879893
880894
/*
881895
** WEBPAGE: /tagtimeline
882896
--- src/tag.c
+++ src/tag.c
@@ -851,31 +851,45 @@
851 login_anonymous_available();
852 style_header("Tags");
853 style_adunit_config(ADUNIT_RIGHT_OK);
854 style_submenu_element("Timeline", "tagtimeline");
855 @ <h2>Non-propagating tags:</h2>
 
 
 
 
 
 
 
856 db_prepare(&q,
857 "SELECT substr(tagname,5)"
858 " FROM tag"
859 " WHERE EXISTS(SELECT 1 FROM tagxref"
860 " WHERE tagid=tag.tagid"
861 " AND tagtype=1)"
862 " AND tagname GLOB 'sym-*'"
863 " ORDER BY tagname COLLATE uintnocase"
 
 
864 );
865 @ <ul>
866 while( db_step(&q)==SQLITE_ROW ){
867 const char *zName = db_column_text(&q, 0);
 
 
 
 
868 if( g.perm.Hyperlink ){
869 @ <li>%z(chref("taglink","%R/timeline?t=%T",zName))
870 @ %h(zName)</a></li>
871 }else{
872 @ <li><span class="tagDsp">%h(zName)</span></li>
873 }
 
 
874 }
875 @ </ul>
876 db_finalize(&q);
 
877 style_finish_page();
878 }
879
880 /*
881 ** WEBPAGE: /tagtimeline
882
--- src/tag.c
+++ src/tag.c
@@ -851,31 +851,45 @@
851 login_anonymous_available();
852 style_header("Tags");
853 style_adunit_config(ADUNIT_RIGHT_OK);
854 style_submenu_element("Timeline", "tagtimeline");
855 @ <h2>Non-propagating tags:</h2>
856 @ <table class='sortable' data-column-types='ktn' data-init-sort='2'>
857 @ <thead><tr>
858 @ <th>Tag Name</th>
859 @ <th>Most Recent</th>
860 @ <th>Count</th>
861 @ </tr></thead><tbody>
862
863 db_prepare(&q,
864 "SELECT substr(tagname,5),\n"
865 "row_number()OVER(ORDER BY tagname COLLATE uintnocase),\n"
866 "substr(datetime(max(mtime)),1,16),\n"
867 "count(*)\n"
868 "FROM tagxref JOIN tag USING(tagid)\n"
869 "WHERE tagname like 'sym-%%'\n"
870 "AND tagxref.tagtype=1\n"
871 "GROUP BY 1\n"
872 "ORDER BY 3 DESC;\n"
873 );
 
874 while( db_step(&q)==SQLITE_ROW ){
875 const char *zName = db_column_text(&q, 0);
876 int rn = db_column_int(&q, 1);
877 const char *zDate = db_column_text(&q, 2);
878 int cnt = db_column_int(&q, 3);
879 @ <tr><td data-sortkey="%06x(rn)">\
880 if( g.perm.Hyperlink ){
881 @ %z(chref("taglink","%R/timeline?t=%T",zName))%h(zName)</a></td>\
 
882 }else{
883 @ <span class="tagDsp">%h(zName)</span></td>\
884 }
885 @ <td>&nbsp;&nbsp;&nbsp;%h(zDate)&nbsp;&nbsp;&nbsp;</td>\
886 @ <td align="center">%d(cnt)</td></tr>
887 }
888 @ </table>
889 db_finalize(&q);
890 style_table_sorter();
891 style_finish_page();
892 }
893
894 /*
895 ** WEBPAGE: /tagtimeline
896

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button