Fossil SCM

Add the "Referenced By" section to the /info page.

drh 2017-07-05 11:12 trunk
Commit fae745cf0fb5188e131c8c745e5a74f988ff78cdca21e5612b8683863510fe33
1 file changed +29
+29
--- src/info.c
+++ src/info.c
@@ -316,10 +316,11 @@
316316
Stmt q;
317317
blob_zero(&sql);
318318
blob_append(&sql, timeline_query_for_www(), -1);
319319
db_multi_exec(
320320
"CREATE TEMP TABLE IF NOT EXISTS ok(rid INTEGER PRIMARY KEY);"
321
+ "DELETE FROM ok;"
321322
"INSERT INTO ok VALUES(%d);"
322323
"INSERT OR IGNORE INTO ok SELECT pid FROM plink WHERE cid=%d;",
323324
rid, rid
324325
);
325326
if( !parentsOnly ){
@@ -330,10 +331,37 @@
330331
blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
331332
db_prepare(&q, "%s", blob_sql_text(&sql));
332333
www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH, 0, 0, rid, 0);
333334
db_finalize(&q);
334335
}
336
+
337
+/*
338
+** Show a graph all wiki, tickets, and check-ins that refer to object zUuid.
339
+*/
340
+void render_backlink_graph(const char *zUuid){
341
+ Blob sql;
342
+ Stmt q;
343
+ char *zGlob;
344
+ zGlob = mprintf("%.5s*", zUuid);
345
+ db_multi_exec(
346
+ "CREATE TEMP TABLE IF NOT EXISTS ok(rid INTEGER PRIMARY KEY);"
347
+ "DELETE FROM ok;"
348
+ "INSERT OR IGNORE INTO ok"
349
+ " SELECT srcid FROM backlink"
350
+ " WHERE target GLOB %Q"
351
+ " AND %Q GLOB (target || '*');",
352
+ zGlob, zUuid
353
+ );
354
+ if( !db_exists("SELECT 1 FROM ok") ) return;
355
+ @ <div class="section">Referenced By</div>
356
+ blob_zero(&sql);
357
+ blob_append(&sql, timeline_query_for_www(), -1);
358
+ blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
359
+ db_prepare(&q, "%s", blob_sql_text(&sql));
360
+ www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH, 0, 0, 0, 0);
361
+ db_finalize(&q);
362
+}
335363
336364
337365
/*
338366
** Append the difference between artifacts to the output
339367
*/
@@ -710,10 +738,11 @@
710738
}
711739
db_finalize(&q1);
712740
showTags(rid);
713741
@ <div class="section">Context</div>
714742
render_checkin_context(rid, 0);
743
+ render_backlink_graph(zUuid);
715744
@ <div class="section">Changes</div>
716745
@ <div class="sectionmenu">
717746
verboseFlag = g.zPath[0]!='c';
718747
if( db_get_boolean("show-version-diffs", 0)==0 ){
719748
verboseFlag = !verboseFlag;
720749
--- src/info.c
+++ src/info.c
@@ -316,10 +316,11 @@
316 Stmt q;
317 blob_zero(&sql);
318 blob_append(&sql, timeline_query_for_www(), -1);
319 db_multi_exec(
320 "CREATE TEMP TABLE IF NOT EXISTS ok(rid INTEGER PRIMARY KEY);"
 
321 "INSERT INTO ok VALUES(%d);"
322 "INSERT OR IGNORE INTO ok SELECT pid FROM plink WHERE cid=%d;",
323 rid, rid
324 );
325 if( !parentsOnly ){
@@ -330,10 +331,37 @@
330 blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
331 db_prepare(&q, "%s", blob_sql_text(&sql));
332 www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH, 0, 0, rid, 0);
333 db_finalize(&q);
334 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
336
337 /*
338 ** Append the difference between artifacts to the output
339 */
@@ -710,10 +738,11 @@
710 }
711 db_finalize(&q1);
712 showTags(rid);
713 @ <div class="section">Context</div>
714 render_checkin_context(rid, 0);
 
715 @ <div class="section">Changes</div>
716 @ <div class="sectionmenu">
717 verboseFlag = g.zPath[0]!='c';
718 if( db_get_boolean("show-version-diffs", 0)==0 ){
719 verboseFlag = !verboseFlag;
720
--- src/info.c
+++ src/info.c
@@ -316,10 +316,11 @@
316 Stmt q;
317 blob_zero(&sql);
318 blob_append(&sql, timeline_query_for_www(), -1);
319 db_multi_exec(
320 "CREATE TEMP TABLE IF NOT EXISTS ok(rid INTEGER PRIMARY KEY);"
321 "DELETE FROM ok;"
322 "INSERT INTO ok VALUES(%d);"
323 "INSERT OR IGNORE INTO ok SELECT pid FROM plink WHERE cid=%d;",
324 rid, rid
325 );
326 if( !parentsOnly ){
@@ -330,10 +331,37 @@
331 blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
332 db_prepare(&q, "%s", blob_sql_text(&sql));
333 www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH, 0, 0, rid, 0);
334 db_finalize(&q);
335 }
336
337 /*
338 ** Show a graph all wiki, tickets, and check-ins that refer to object zUuid.
339 */
340 void render_backlink_graph(const char *zUuid){
341 Blob sql;
342 Stmt q;
343 char *zGlob;
344 zGlob = mprintf("%.5s*", zUuid);
345 db_multi_exec(
346 "CREATE TEMP TABLE IF NOT EXISTS ok(rid INTEGER PRIMARY KEY);"
347 "DELETE FROM ok;"
348 "INSERT OR IGNORE INTO ok"
349 " SELECT srcid FROM backlink"
350 " WHERE target GLOB %Q"
351 " AND %Q GLOB (target || '*');",
352 zGlob, zUuid
353 );
354 if( !db_exists("SELECT 1 FROM ok") ) return;
355 @ <div class="section">Referenced By</div>
356 blob_zero(&sql);
357 blob_append(&sql, timeline_query_for_www(), -1);
358 blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
359 db_prepare(&q, "%s", blob_sql_text(&sql));
360 www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH, 0, 0, 0, 0);
361 db_finalize(&q);
362 }
363
364
365 /*
366 ** Append the difference between artifacts to the output
367 */
@@ -710,10 +738,11 @@
738 }
739 db_finalize(&q1);
740 showTags(rid);
741 @ <div class="section">Context</div>
742 render_checkin_context(rid, 0);
743 render_backlink_graph(zUuid);
744 @ <div class="section">Changes</div>
745 @ <div class="sectionmenu">
746 verboseFlag = g.zPath[0]!='c';
747 if( db_get_boolean("show-version-diffs", 0)==0 ){
748 verboseFlag = !verboseFlag;
749

Keyboard Shortcuts

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