Fossil SCM

Add the 'onlyhidden' query parameter to show only check-ins tagged as "hidden" for the /leaves, /brtimeline, and /tagtimeline web pages.

florian 2018-12-26 10:16 fix-timeline-view
Commit 82b9140f3091a21822bef75a8d3d682edb2521308065d070e9300f92526c9516
+9 -4
--- src/branch.c
+++ src/branch.c
@@ -618,17 +618,20 @@
618618
**
619619
** Query parameters:
620620
**
621621
** ng No graph
622622
** hide Hide check-ins with "hidden" tag
623
+** onlyhidden Show only check-ins with "hidden" tag
623624
** brbg Background color by branch name
624625
** ubg Background color by user name
625626
*/
626627
void brtimeline_page(void){
627628
Blob sql = empty_blob;
628629
Stmt q;
629
- int tmFlags; /* Timeline display flags */
630
+ int tmFlags; /* Timeline display flags */
631
+ int fHide = PB("hide")!=0; /* The "hide" query parameter */
632
+ int fOnlyHidden = PB("onlyhidden")!=0; /* The "onlyhidden" query parameter */
630633
631634
login_check_credentials();
632635
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
633636
634637
style_header("Branches");
@@ -639,14 +642,16 @@
639642
@ <h2>The initial check-in for each branch:</h2>
640643
blob_append(&sql, timeline_query_for_www(), -1);
641644
blob_append_sql(&sql,
642645
"AND blob.rid IN (SELECT rid FROM tagxref"
643646
" WHERE tagtype>0 AND tagid=%d AND srcid!=0)", TAG_BRANCH);
644
- if( PB("hide") ){
647
+ if( fHide || fOnlyHidden ){
648
+ const char* zUnaryOp = fHide ? "NOT" : "";
645649
blob_append_sql(&sql,
646
- " AND NOT EXISTS(SELECT 1 FROM tagxref"
647
- " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n", TAG_HIDDEN);
650
+ " AND %s EXISTS(SELECT 1 FROM tagxref"
651
+ " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n",
652
+ zUnaryOp/*safe-for-%s*/, TAG_HIDDEN);
648653
}
649654
db_prepare(&q, "%s ORDER BY event.mtime DESC", blob_sql_text(&sql));
650655
blob_reset(&sql);
651656
/* Always specify TIMELINE_DISJOINT, or graph_finish() may fail because of too
652657
** many descenders to (off-screen) parents. */
653658
--- src/branch.c
+++ src/branch.c
@@ -618,17 +618,20 @@
618 **
619 ** Query parameters:
620 **
621 ** ng No graph
622 ** hide Hide check-ins with "hidden" tag
 
623 ** brbg Background color by branch name
624 ** ubg Background color by user name
625 */
626 void brtimeline_page(void){
627 Blob sql = empty_blob;
628 Stmt q;
629 int tmFlags; /* Timeline display flags */
 
 
630
631 login_check_credentials();
632 if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
633
634 style_header("Branches");
@@ -639,14 +642,16 @@
639 @ <h2>The initial check-in for each branch:</h2>
640 blob_append(&sql, timeline_query_for_www(), -1);
641 blob_append_sql(&sql,
642 "AND blob.rid IN (SELECT rid FROM tagxref"
643 " WHERE tagtype>0 AND tagid=%d AND srcid!=0)", TAG_BRANCH);
644 if( PB("hide") ){
 
645 blob_append_sql(&sql,
646 " AND NOT EXISTS(SELECT 1 FROM tagxref"
647 " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n", TAG_HIDDEN);
 
648 }
649 db_prepare(&q, "%s ORDER BY event.mtime DESC", blob_sql_text(&sql));
650 blob_reset(&sql);
651 /* Always specify TIMELINE_DISJOINT, or graph_finish() may fail because of too
652 ** many descenders to (off-screen) parents. */
653
--- src/branch.c
+++ src/branch.c
@@ -618,17 +618,20 @@
618 **
619 ** Query parameters:
620 **
621 ** ng No graph
622 ** hide Hide check-ins with "hidden" tag
623 ** onlyhidden Show only check-ins with "hidden" tag
624 ** brbg Background color by branch name
625 ** ubg Background color by user name
626 */
627 void brtimeline_page(void){
628 Blob sql = empty_blob;
629 Stmt q;
630 int tmFlags; /* Timeline display flags */
631 int fHide = PB("hide")!=0; /* The "hide" query parameter */
632 int fOnlyHidden = PB("onlyhidden")!=0; /* The "onlyhidden" query parameter */
633
634 login_check_credentials();
635 if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
636
637 style_header("Branches");
@@ -639,14 +642,16 @@
642 @ <h2>The initial check-in for each branch:</h2>
643 blob_append(&sql, timeline_query_for_www(), -1);
644 blob_append_sql(&sql,
645 "AND blob.rid IN (SELECT rid FROM tagxref"
646 " WHERE tagtype>0 AND tagid=%d AND srcid!=0)", TAG_BRANCH);
647 if( fHide || fOnlyHidden ){
648 const char* zUnaryOp = fHide ? "NOT" : "";
649 blob_append_sql(&sql,
650 " AND %s EXISTS(SELECT 1 FROM tagxref"
651 " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n",
652 zUnaryOp/*safe-for-%s*/, TAG_HIDDEN);
653 }
654 db_prepare(&q, "%s ORDER BY event.mtime DESC", blob_sql_text(&sql));
655 blob_reset(&sql);
656 /* Always specify TIMELINE_DISJOINT, or graph_finish() may fail because of too
657 ** many descenders to (off-screen) parents. */
658
--- src/descendants.c
+++ src/descendants.c
@@ -456,10 +456,11 @@
456456
**
457457
** all Show all leaves
458458
** closed Show only closed leaves
459459
** ng No graph
460460
** hide Hide check-ins with "hidden" tag
461
+** onlyhidden Show only check-ins with "hidden" tag
461462
** brbg Background color by branch name
462463
** ubg Background color by user name
463464
*/
464465
void leaves_page(void){
465466
Blob sql;
@@ -466,10 +467,11 @@
466467
Stmt q;
467468
int showAll = P("all")!=0;
468469
int showClosed = P("closed")!=0;
469470
int fNg = PB("ng")!=0; /* Flag for the "ng" query parameter */
470471
int fHide = PB("hide")!=0; /* Flag for the "hide" query parameter */
472
+ int fOnlyHidden = PB("onlyhidden")!=0; /* "onlyhidden" query parameter */
471473
int fBrBg = PB("brbg")!=0; /* Flag for the "brbg" query parameter */
472474
int fUBg = PB("ubg")!=0; /* Flag for the "ubg" query parameter */
473475
Blob QueryParams = empty_blob; /* Concatenated query parameters */
474476
char *zParamSep = 0; /* Query parameter separator */
475477
int tmFlags; /* Timeline display flags */
@@ -481,10 +483,14 @@
481483
zParamSep = "&";
482484
}
483485
if( fHide ){
484486
blob_appendf(&QueryParams, "%s%s", zParamSep, "hide");
485487
zParamSep = "&";
488
+ }
489
+ if( fOnlyHidden ){
490
+ blob_appendf(&QueryParams, "%s%s", zParamSep, "onlyhidden");
491
+ zParamSep = "&";
486492
}
487493
if( fBrBg ){
488494
blob_appendf(&QueryParams, "%s%s", zParamSep, "brbg");
489495
zParamSep = "&";
490496
}
@@ -538,14 +544,16 @@
538544
if( showClosed ){
539545
blob_append_sql(&sql," AND %z", leaf_is_closed_sql("blob.rid"));
540546
}else if( !showAll ){
541547
blob_append_sql(&sql," AND NOT %z", leaf_is_closed_sql("blob.rid"));
542548
}
543
- if( fHide ){
549
+ if( fHide || fOnlyHidden ){
550
+ const char* zUnaryOp = fHide ? "NOT" : "";
544551
blob_append_sql(&sql,
545
- " AND NOT EXISTS(SELECT 1 FROM tagxref"
546
- " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n", TAG_HIDDEN);
552
+ " AND %s EXISTS(SELECT 1 FROM tagxref"
553
+ " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n",
554
+ zUnaryOp/*safe-for-%s*/, TAG_HIDDEN);
547555
}
548556
db_prepare(&q, "%s ORDER BY event.mtime DESC", blob_sql_text(&sql));
549557
blob_reset(&sql);
550558
/* Always specify TIMELINE_DISJOINT, or graph_finish() may fail because of too
551559
** many descenders to (off-screen) parents. */
552560
--- src/descendants.c
+++ src/descendants.c
@@ -456,10 +456,11 @@
456 **
457 ** all Show all leaves
458 ** closed Show only closed leaves
459 ** ng No graph
460 ** hide Hide check-ins with "hidden" tag
 
461 ** brbg Background color by branch name
462 ** ubg Background color by user name
463 */
464 void leaves_page(void){
465 Blob sql;
@@ -466,10 +467,11 @@
466 Stmt q;
467 int showAll = P("all")!=0;
468 int showClosed = P("closed")!=0;
469 int fNg = PB("ng")!=0; /* Flag for the "ng" query parameter */
470 int fHide = PB("hide")!=0; /* Flag for the "hide" query parameter */
 
471 int fBrBg = PB("brbg")!=0; /* Flag for the "brbg" query parameter */
472 int fUBg = PB("ubg")!=0; /* Flag for the "ubg" query parameter */
473 Blob QueryParams = empty_blob; /* Concatenated query parameters */
474 char *zParamSep = 0; /* Query parameter separator */
475 int tmFlags; /* Timeline display flags */
@@ -481,10 +483,14 @@
481 zParamSep = "&";
482 }
483 if( fHide ){
484 blob_appendf(&QueryParams, "%s%s", zParamSep, "hide");
485 zParamSep = "&";
 
 
 
 
486 }
487 if( fBrBg ){
488 blob_appendf(&QueryParams, "%s%s", zParamSep, "brbg");
489 zParamSep = "&";
490 }
@@ -538,14 +544,16 @@
538 if( showClosed ){
539 blob_append_sql(&sql," AND %z", leaf_is_closed_sql("blob.rid"));
540 }else if( !showAll ){
541 blob_append_sql(&sql," AND NOT %z", leaf_is_closed_sql("blob.rid"));
542 }
543 if( fHide ){
 
544 blob_append_sql(&sql,
545 " AND NOT EXISTS(SELECT 1 FROM tagxref"
546 " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n", TAG_HIDDEN);
 
547 }
548 db_prepare(&q, "%s ORDER BY event.mtime DESC", blob_sql_text(&sql));
549 blob_reset(&sql);
550 /* Always specify TIMELINE_DISJOINT, or graph_finish() may fail because of too
551 ** many descenders to (off-screen) parents. */
552
--- src/descendants.c
+++ src/descendants.c
@@ -456,10 +456,11 @@
456 **
457 ** all Show all leaves
458 ** closed Show only closed leaves
459 ** ng No graph
460 ** hide Hide check-ins with "hidden" tag
461 ** onlyhidden Show only check-ins with "hidden" tag
462 ** brbg Background color by branch name
463 ** ubg Background color by user name
464 */
465 void leaves_page(void){
466 Blob sql;
@@ -466,10 +467,11 @@
467 Stmt q;
468 int showAll = P("all")!=0;
469 int showClosed = P("closed")!=0;
470 int fNg = PB("ng")!=0; /* Flag for the "ng" query parameter */
471 int fHide = PB("hide")!=0; /* Flag for the "hide" query parameter */
472 int fOnlyHidden = PB("onlyhidden")!=0; /* "onlyhidden" query parameter */
473 int fBrBg = PB("brbg")!=0; /* Flag for the "brbg" query parameter */
474 int fUBg = PB("ubg")!=0; /* Flag for the "ubg" query parameter */
475 Blob QueryParams = empty_blob; /* Concatenated query parameters */
476 char *zParamSep = 0; /* Query parameter separator */
477 int tmFlags; /* Timeline display flags */
@@ -481,10 +483,14 @@
483 zParamSep = "&";
484 }
485 if( fHide ){
486 blob_appendf(&QueryParams, "%s%s", zParamSep, "hide");
487 zParamSep = "&";
488 }
489 if( fOnlyHidden ){
490 blob_appendf(&QueryParams, "%s%s", zParamSep, "onlyhidden");
491 zParamSep = "&";
492 }
493 if( fBrBg ){
494 blob_appendf(&QueryParams, "%s%s", zParamSep, "brbg");
495 zParamSep = "&";
496 }
@@ -538,14 +544,16 @@
544 if( showClosed ){
545 blob_append_sql(&sql," AND %z", leaf_is_closed_sql("blob.rid"));
546 }else if( !showAll ){
547 blob_append_sql(&sql," AND NOT %z", leaf_is_closed_sql("blob.rid"));
548 }
549 if( fHide || fOnlyHidden ){
550 const char* zUnaryOp = fHide ? "NOT" : "";
551 blob_append_sql(&sql,
552 " AND %s EXISTS(SELECT 1 FROM tagxref"
553 " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n",
554 zUnaryOp/*safe-for-%s*/, TAG_HIDDEN);
555 }
556 db_prepare(&q, "%s ORDER BY event.mtime DESC", blob_sql_text(&sql));
557 blob_reset(&sql);
558 /* Always specify TIMELINE_DISJOINT, or graph_finish() may fail because of too
559 ** many descenders to (off-screen) parents. */
560
+9 -4
--- src/tag.c
+++ src/tag.c
@@ -690,17 +690,20 @@
690690
**
691691
** Query parameters:
692692
**
693693
** ng No graph
694694
** hide Hide check-ins with "hidden" tag
695
+** onlyhidden Show only check-ins with "hidden" tag
695696
** brbg Background color by branch name
696697
** ubg Background color by user name
697698
*/
698699
void tagtimeline_page(void){
699700
Blob sql = empty_blob;
700701
Stmt q;
701
- int tmFlags; /* Timeline display flags */
702
+ int tmFlags; /* Timeline display flags */
703
+ int fHide = PB("hide")!=0; /* The "hide" query parameter */
704
+ int fOnlyHidden = PB("onlyhidden")!=0; /* The "onlyhidden" query parameter */
702705
703706
login_check_credentials();
704707
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
705708
706709
style_header("Tagged Check-ins");
@@ -713,14 +716,16 @@
713716
blob_append_sql(&sql,
714717
"AND blob.rid IN (SELECT rid FROM tagxref"
715718
" WHERE tagtype=1 AND srcid>0"
716719
" AND tagid IN (SELECT tagid FROM tag "
717720
" WHERE tagname GLOB 'sym-*'))");
718
- if( PB("hide") ){
721
+ if( fHide || fOnlyHidden ){
722
+ const char* zUnaryOp = fHide ? "NOT" : "";
719723
blob_append_sql(&sql,
720
- " AND NOT EXISTS(SELECT 1 FROM tagxref"
721
- " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n", TAG_HIDDEN);
724
+ " AND %s EXISTS(SELECT 1 FROM tagxref"
725
+ " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n",
726
+ zUnaryOp/*safe-for-%s*/, TAG_HIDDEN);
722727
}
723728
db_prepare(&q, "%s ORDER BY event.mtime DESC /*sort*/", blob_sql_text(&sql));
724729
blob_reset(&sql);
725730
/* Always specify TIMELINE_DISJOINT, or graph_finish() may fail because of too
726731
** many descenders to (off-screen) parents. */
727732
--- src/tag.c
+++ src/tag.c
@@ -690,17 +690,20 @@
690 **
691 ** Query parameters:
692 **
693 ** ng No graph
694 ** hide Hide check-ins with "hidden" tag
 
695 ** brbg Background color by branch name
696 ** ubg Background color by user name
697 */
698 void tagtimeline_page(void){
699 Blob sql = empty_blob;
700 Stmt q;
701 int tmFlags; /* Timeline display flags */
 
 
702
703 login_check_credentials();
704 if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
705
706 style_header("Tagged Check-ins");
@@ -713,14 +716,16 @@
713 blob_append_sql(&sql,
714 "AND blob.rid IN (SELECT rid FROM tagxref"
715 " WHERE tagtype=1 AND srcid>0"
716 " AND tagid IN (SELECT tagid FROM tag "
717 " WHERE tagname GLOB 'sym-*'))");
718 if( PB("hide") ){
 
719 blob_append_sql(&sql,
720 " AND NOT EXISTS(SELECT 1 FROM tagxref"
721 " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n", TAG_HIDDEN);
 
722 }
723 db_prepare(&q, "%s ORDER BY event.mtime DESC /*sort*/", blob_sql_text(&sql));
724 blob_reset(&sql);
725 /* Always specify TIMELINE_DISJOINT, or graph_finish() may fail because of too
726 ** many descenders to (off-screen) parents. */
727
--- src/tag.c
+++ src/tag.c
@@ -690,17 +690,20 @@
690 **
691 ** Query parameters:
692 **
693 ** ng No graph
694 ** hide Hide check-ins with "hidden" tag
695 ** onlyhidden Show only check-ins with "hidden" tag
696 ** brbg Background color by branch name
697 ** ubg Background color by user name
698 */
699 void tagtimeline_page(void){
700 Blob sql = empty_blob;
701 Stmt q;
702 int tmFlags; /* Timeline display flags */
703 int fHide = PB("hide")!=0; /* The "hide" query parameter */
704 int fOnlyHidden = PB("onlyhidden")!=0; /* The "onlyhidden" query parameter */
705
706 login_check_credentials();
707 if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
708
709 style_header("Tagged Check-ins");
@@ -713,14 +716,16 @@
716 blob_append_sql(&sql,
717 "AND blob.rid IN (SELECT rid FROM tagxref"
718 " WHERE tagtype=1 AND srcid>0"
719 " AND tagid IN (SELECT tagid FROM tag "
720 " WHERE tagname GLOB 'sym-*'))");
721 if( fHide || fOnlyHidden ){
722 const char* zUnaryOp = fHide ? "NOT" : "";
723 blob_append_sql(&sql,
724 " AND %s EXISTS(SELECT 1 FROM tagxref"
725 " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)\n",
726 zUnaryOp/*safe-for-%s*/, TAG_HIDDEN);
727 }
728 db_prepare(&q, "%s ORDER BY event.mtime DESC /*sort*/", blob_sql_text(&sql));
729 blob_reset(&sql);
730 /* Always specify TIMELINE_DISJOINT, or graph_finish() may fail because of too
731 ** many descenders to (off-screen) parents. */
732

Keyboard Shortcuts

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