Fossil SCM

Make timeline and JSON timeline respect the "hidden" tag. Meant for a new feature developed in the "hidden-tag" branch. No added buttons or configuration options yet (still being discussed).

jan.nijtmans 2013-12-10 08:22 trunk
Commit 45d69e82eb28b13440276dc12c4028c73af6acf8
--- src/json_timeline.c
+++ src/json_timeline.c
@@ -145,10 +145,11 @@
145145
static char json_timeline_add_tag_branch_clause(Blob *pSql,
146146
cson_object * pPayload){
147147
char const * zTag = NULL;
148148
char const * zBranch = NULL;
149149
char const * zMiOnly = NULL;
150
+ char const * zUnhide = NULL;
150151
int tagid = 0;
151152
if(! g.perm.Read ){
152153
return 0;
153154
}
154155
zTag = json_find_option_cstr("tag",NULL,NULL);
@@ -158,10 +159,11 @@
158159
return 0;
159160
}
160161
zTag = zBranch;
161162
zMiOnly = json_find_option_cstr("mionly",NULL,NULL);
162163
}
164
+ zUnhide = json_find_option_cstr("unhide",NULL,NULL);
163165
tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname='sym-%q'",
164166
zTag);
165167
if(tagid<=0){
166168
return -1;
167169
}
@@ -171,21 +173,39 @@
171173
blob_appendf(pSql,
172174
" AND ("
173175
" EXISTS(SELECT 1 FROM tagxref"
174176
" WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)",
175177
tagid);
178
+ if(!zUnhide){
179
+ blob_appendf(pSql,
180
+ " AND NOT EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=blob.rid"
181
+ " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)",
182
+ TAG_HIDDEN);
183
+ }
176184
if(zBranch){
177185
/* from "r" flag code in page_timeline().*/
178186
blob_appendf(pSql,
179187
" OR EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=cid"
180188
" WHERE tagid=%d AND tagtype>0 AND pid=blob.rid)",
181189
tagid);
190
+ if( !zUnhide ){
191
+ blob_appendf(pSql,
192
+ " AND NOT EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=cid"
193
+ " WHERE tagid=%d AND tagtype>0 AND pid=blob.rid)",
194
+ TAG_HIDDEN);
195
+ }
182196
if( zMiOnly==0 ){
183197
blob_appendf(pSql,
184198
" OR EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=pid"
185199
" WHERE tagid=%d AND tagtype>0 AND cid=blob.rid)",
186200
tagid);
201
+ if( !zUnhide ){
202
+ blob_appendf(pSql,
203
+ " AND NOT EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=pid"
204
+ " WHERE tagid=%d AND tagtype>0 AND cid=blob.rid)",
205
+ TAG_HIDDEN);
206
+ }
187207
}
188208
}
189209
blob_append(pSql," ) ",3);
190210
return 1;
191211
}
192212
--- src/json_timeline.c
+++ src/json_timeline.c
@@ -145,10 +145,11 @@
145 static char json_timeline_add_tag_branch_clause(Blob *pSql,
146 cson_object * pPayload){
147 char const * zTag = NULL;
148 char const * zBranch = NULL;
149 char const * zMiOnly = NULL;
 
150 int tagid = 0;
151 if(! g.perm.Read ){
152 return 0;
153 }
154 zTag = json_find_option_cstr("tag",NULL,NULL);
@@ -158,10 +159,11 @@
158 return 0;
159 }
160 zTag = zBranch;
161 zMiOnly = json_find_option_cstr("mionly",NULL,NULL);
162 }
 
163 tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname='sym-%q'",
164 zTag);
165 if(tagid<=0){
166 return -1;
167 }
@@ -171,21 +173,39 @@
171 blob_appendf(pSql,
172 " AND ("
173 " EXISTS(SELECT 1 FROM tagxref"
174 " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)",
175 tagid);
 
 
 
 
 
 
176 if(zBranch){
177 /* from "r" flag code in page_timeline().*/
178 blob_appendf(pSql,
179 " OR EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=cid"
180 " WHERE tagid=%d AND tagtype>0 AND pid=blob.rid)",
181 tagid);
 
 
 
 
 
 
182 if( zMiOnly==0 ){
183 blob_appendf(pSql,
184 " OR EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=pid"
185 " WHERE tagid=%d AND tagtype>0 AND cid=blob.rid)",
186 tagid);
 
 
 
 
 
 
187 }
188 }
189 blob_append(pSql," ) ",3);
190 return 1;
191 }
192
--- src/json_timeline.c
+++ src/json_timeline.c
@@ -145,10 +145,11 @@
145 static char json_timeline_add_tag_branch_clause(Blob *pSql,
146 cson_object * pPayload){
147 char const * zTag = NULL;
148 char const * zBranch = NULL;
149 char const * zMiOnly = NULL;
150 char const * zUnhide = NULL;
151 int tagid = 0;
152 if(! g.perm.Read ){
153 return 0;
154 }
155 zTag = json_find_option_cstr("tag",NULL,NULL);
@@ -158,10 +159,11 @@
159 return 0;
160 }
161 zTag = zBranch;
162 zMiOnly = json_find_option_cstr("mionly",NULL,NULL);
163 }
164 zUnhide = json_find_option_cstr("unhide",NULL,NULL);
165 tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname='sym-%q'",
166 zTag);
167 if(tagid<=0){
168 return -1;
169 }
@@ -171,21 +173,39 @@
173 blob_appendf(pSql,
174 " AND ("
175 " EXISTS(SELECT 1 FROM tagxref"
176 " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)",
177 tagid);
178 if(!zUnhide){
179 blob_appendf(pSql,
180 " AND NOT EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=blob.rid"
181 " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)",
182 TAG_HIDDEN);
183 }
184 if(zBranch){
185 /* from "r" flag code in page_timeline().*/
186 blob_appendf(pSql,
187 " OR EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=cid"
188 " WHERE tagid=%d AND tagtype>0 AND pid=blob.rid)",
189 tagid);
190 if( !zUnhide ){
191 blob_appendf(pSql,
192 " AND NOT EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=cid"
193 " WHERE tagid=%d AND tagtype>0 AND pid=blob.rid)",
194 TAG_HIDDEN);
195 }
196 if( zMiOnly==0 ){
197 blob_appendf(pSql,
198 " OR EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=pid"
199 " WHERE tagid=%d AND tagtype>0 AND cid=blob.rid)",
200 tagid);
201 if( !zUnhide ){
202 blob_appendf(pSql,
203 " AND NOT EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=pid"
204 " WHERE tagid=%d AND tagtype>0 AND cid=blob.rid)",
205 TAG_HIDDEN);
206 }
207 }
208 }
209 blob_append(pSql," ) ",3);
210 return 1;
211 }
212
+2 -2
--- src/schema.c
+++ src/schema.c
@@ -435,12 +435,12 @@
435435
#if INTERFACE
436436
# define TAG_BGCOLOR 1 /* Set the background color for display */
437437
# define TAG_COMMENT 2 /* The check-in comment */
438438
# define TAG_USER 3 /* User who made a checking */
439439
# define TAG_DATE 4 /* The date of a check-in */
440
-# define TAG_HIDDEN 5 /* Do not display or sync */
441
-# define TAG_PRIVATE 6 /* Display but do not sync */
440
+# define TAG_HIDDEN 5 /* Do not display in timeline */
441
+# define TAG_PRIVATE 6 /* Do not sync */
442442
# define TAG_CLUSTER 7 /* A cluster */
443443
# define TAG_BRANCH 8 /* Value is name of the current branch */
444444
# define TAG_CLOSED 9 /* Do not display this check-in as a leaf */
445445
# define TAG_PARENT 10 /* Change to parentage on a checkin */
446446
#endif
447447
--- src/schema.c
+++ src/schema.c
@@ -435,12 +435,12 @@
435 #if INTERFACE
436 # define TAG_BGCOLOR 1 /* Set the background color for display */
437 # define TAG_COMMENT 2 /* The check-in comment */
438 # define TAG_USER 3 /* User who made a checking */
439 # define TAG_DATE 4 /* The date of a check-in */
440 # define TAG_HIDDEN 5 /* Do not display or sync */
441 # define TAG_PRIVATE 6 /* Display but do not sync */
442 # define TAG_CLUSTER 7 /* A cluster */
443 # define TAG_BRANCH 8 /* Value is name of the current branch */
444 # define TAG_CLOSED 9 /* Do not display this check-in as a leaf */
445 # define TAG_PARENT 10 /* Change to parentage on a checkin */
446 #endif
447
--- src/schema.c
+++ src/schema.c
@@ -435,12 +435,12 @@
435 #if INTERFACE
436 # define TAG_BGCOLOR 1 /* Set the background color for display */
437 # define TAG_COMMENT 2 /* The check-in comment */
438 # define TAG_USER 3 /* User who made a checking */
439 # define TAG_DATE 4 /* The date of a check-in */
440 # define TAG_HIDDEN 5 /* Do not display in timeline */
441 # define TAG_PRIVATE 6 /* Do not sync */
442 # define TAG_CLUSTER 7 /* A cluster */
443 # define TAG_BRANCH 8 /* Value is name of the current branch */
444 # define TAG_CLOSED 9 /* Do not display this check-in as a leaf */
445 # define TAG_PARENT 10 /* Change to parentage on a checkin */
446 #endif
447
--- src/timeline.c
+++ src/timeline.c
@@ -111,10 +111,11 @@
111111
#define TIMELINE_DISJOINT 0x0010 /* Elements are not contiguous */
112112
#define TIMELINE_FCHANGES 0x0020 /* Detail file changes */
113113
#define TIMELINE_BRCOLOR 0x0040 /* Background color by branch name */
114114
#define TIMELINE_UCOLOR 0x0080 /* Background color by user */
115115
#define TIMELINE_FRENAMES 0x0100 /* Detail only file name changes */
116
+#define TIMELINE_UNHIDE 0x0200 /* Unhide check-ins with "hidden" tag */
116117
#endif
117118
118119
/*
119120
** Hash a string and use the hash to determine a background color.
120121
*/
@@ -1118,10 +1119,13 @@
11181119
}
11191120
if( P("brbg")!=0 ){
11201121
tmFlags |= TIMELINE_BRCOLOR;
11211122
url_add_parameter(&url, "brbg", 0);
11221123
}
1124
+ if( P("unhide")!=0 ){
1125
+ tmFlags |= TIMELINE_UNHIDE;
1126
+ }
11231127
if( P("ubg")!=0 ){
11241128
tmFlags |= TIMELINE_UCOLOR;
11251129
url_add_parameter(&url, "ubg", 0);
11261130
}
11271131
if( zUses!=0 ){
@@ -1152,10 +1156,15 @@
11521156
blob_append(&sql, "INSERT OR IGNORE INTO timeline ", -1);
11531157
blob_append(&sql, timeline_query_for_www(), -1);
11541158
if( P("fc")!=0 || P("v")!=0 || P("detail")!=0 ){
11551159
tmFlags |= TIMELINE_FCHANGES;
11561160
url_add_parameter(&url, "v", 0);
1161
+ }
1162
+ if( (tmFlags & TIMELINE_UNHIDE)==0 ){
1163
+ blob_appendf(&sql, " AND NOT EXISTS(SELECT 1 FROM tagxref"
1164
+ " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)",
1165
+ TAG_HIDDEN);
11571166
}
11581167
if( !useDividers ) url_add_parameter(&url, "nd", 0);
11591168
if( ((from_rid && to_rid) || (me_rid && you_rid)) && g.perm.Read ){
11601169
/* If from= and to= are present, display all nodes on a path connecting
11611170
** the two */
@@ -1277,16 +1286,28 @@
12771286
blob_appendf(&sql,
12781287
" OR EXISTS(SELECT 1 FROM plink CROSS JOIN tagxref ON rid=cid"
12791288
" WHERE tagid=%d AND tagtype>0 AND pid=blob.rid)",
12801289
tagid
12811290
);
1291
+ if( (tmFlags & TIMELINE_UNHIDE)==0 ){
1292
+ blob_appendf(&sql,
1293
+ " AND NOT EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=cid"
1294
+ " WHERE tagid=%d AND tagtype>0 AND pid=blob.rid)",
1295
+ TAG_HIDDEN
1296
+ );
1297
+ }
12821298
if( P("mionly")==0 ){
12831299
blob_appendf(&sql,
12841300
" OR EXISTS(SELECT 1 FROM plink CROSS JOIN tagxref ON rid=pid"
12851301
" WHERE tagid=%d AND tagtype>0 AND cid=blob.rid)",
12861302
tagid
12871303
);
1304
+ if( (tmFlags & TIMELINE_UNHIDE)==0 ){
1305
+ blob_appendf(&sql, " AND NOT EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=pid"
1306
+ " WHERE tagid=%d AND tagtype>0 AND cid=blob.rid)",
1307
+ TAG_HIDDEN);
1308
+ }
12881309
}else{
12891310
url_add_parameter(&url, "mionly", "1");
12901311
}
12911312
}else{
12921313
url_add_parameter(&url, "t", zTagName);
12931314
--- src/timeline.c
+++ src/timeline.c
@@ -111,10 +111,11 @@
111 #define TIMELINE_DISJOINT 0x0010 /* Elements are not contiguous */
112 #define TIMELINE_FCHANGES 0x0020 /* Detail file changes */
113 #define TIMELINE_BRCOLOR 0x0040 /* Background color by branch name */
114 #define TIMELINE_UCOLOR 0x0080 /* Background color by user */
115 #define TIMELINE_FRENAMES 0x0100 /* Detail only file name changes */
 
116 #endif
117
118 /*
119 ** Hash a string and use the hash to determine a background color.
120 */
@@ -1118,10 +1119,13 @@
1118 }
1119 if( P("brbg")!=0 ){
1120 tmFlags |= TIMELINE_BRCOLOR;
1121 url_add_parameter(&url, "brbg", 0);
1122 }
 
 
 
1123 if( P("ubg")!=0 ){
1124 tmFlags |= TIMELINE_UCOLOR;
1125 url_add_parameter(&url, "ubg", 0);
1126 }
1127 if( zUses!=0 ){
@@ -1152,10 +1156,15 @@
1152 blob_append(&sql, "INSERT OR IGNORE INTO timeline ", -1);
1153 blob_append(&sql, timeline_query_for_www(), -1);
1154 if( P("fc")!=0 || P("v")!=0 || P("detail")!=0 ){
1155 tmFlags |= TIMELINE_FCHANGES;
1156 url_add_parameter(&url, "v", 0);
 
 
 
 
 
1157 }
1158 if( !useDividers ) url_add_parameter(&url, "nd", 0);
1159 if( ((from_rid && to_rid) || (me_rid && you_rid)) && g.perm.Read ){
1160 /* If from= and to= are present, display all nodes on a path connecting
1161 ** the two */
@@ -1277,16 +1286,28 @@
1277 blob_appendf(&sql,
1278 " OR EXISTS(SELECT 1 FROM plink CROSS JOIN tagxref ON rid=cid"
1279 " WHERE tagid=%d AND tagtype>0 AND pid=blob.rid)",
1280 tagid
1281 );
 
 
 
 
 
 
 
1282 if( P("mionly")==0 ){
1283 blob_appendf(&sql,
1284 " OR EXISTS(SELECT 1 FROM plink CROSS JOIN tagxref ON rid=pid"
1285 " WHERE tagid=%d AND tagtype>0 AND cid=blob.rid)",
1286 tagid
1287 );
 
 
 
 
 
1288 }else{
1289 url_add_parameter(&url, "mionly", "1");
1290 }
1291 }else{
1292 url_add_parameter(&url, "t", zTagName);
1293
--- src/timeline.c
+++ src/timeline.c
@@ -111,10 +111,11 @@
111 #define TIMELINE_DISJOINT 0x0010 /* Elements are not contiguous */
112 #define TIMELINE_FCHANGES 0x0020 /* Detail file changes */
113 #define TIMELINE_BRCOLOR 0x0040 /* Background color by branch name */
114 #define TIMELINE_UCOLOR 0x0080 /* Background color by user */
115 #define TIMELINE_FRENAMES 0x0100 /* Detail only file name changes */
116 #define TIMELINE_UNHIDE 0x0200 /* Unhide check-ins with "hidden" tag */
117 #endif
118
119 /*
120 ** Hash a string and use the hash to determine a background color.
121 */
@@ -1118,10 +1119,13 @@
1119 }
1120 if( P("brbg")!=0 ){
1121 tmFlags |= TIMELINE_BRCOLOR;
1122 url_add_parameter(&url, "brbg", 0);
1123 }
1124 if( P("unhide")!=0 ){
1125 tmFlags |= TIMELINE_UNHIDE;
1126 }
1127 if( P("ubg")!=0 ){
1128 tmFlags |= TIMELINE_UCOLOR;
1129 url_add_parameter(&url, "ubg", 0);
1130 }
1131 if( zUses!=0 ){
@@ -1152,10 +1156,15 @@
1156 blob_append(&sql, "INSERT OR IGNORE INTO timeline ", -1);
1157 blob_append(&sql, timeline_query_for_www(), -1);
1158 if( P("fc")!=0 || P("v")!=0 || P("detail")!=0 ){
1159 tmFlags |= TIMELINE_FCHANGES;
1160 url_add_parameter(&url, "v", 0);
1161 }
1162 if( (tmFlags & TIMELINE_UNHIDE)==0 ){
1163 blob_appendf(&sql, " AND NOT EXISTS(SELECT 1 FROM tagxref"
1164 " WHERE tagid=%d AND tagtype>0 AND rid=blob.rid)",
1165 TAG_HIDDEN);
1166 }
1167 if( !useDividers ) url_add_parameter(&url, "nd", 0);
1168 if( ((from_rid && to_rid) || (me_rid && you_rid)) && g.perm.Read ){
1169 /* If from= and to= are present, display all nodes on a path connecting
1170 ** the two */
@@ -1277,16 +1286,28 @@
1286 blob_appendf(&sql,
1287 " OR EXISTS(SELECT 1 FROM plink CROSS JOIN tagxref ON rid=cid"
1288 " WHERE tagid=%d AND tagtype>0 AND pid=blob.rid)",
1289 tagid
1290 );
1291 if( (tmFlags & TIMELINE_UNHIDE)==0 ){
1292 blob_appendf(&sql,
1293 " AND NOT EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=cid"
1294 " WHERE tagid=%d AND tagtype>0 AND pid=blob.rid)",
1295 TAG_HIDDEN
1296 );
1297 }
1298 if( P("mionly")==0 ){
1299 blob_appendf(&sql,
1300 " OR EXISTS(SELECT 1 FROM plink CROSS JOIN tagxref ON rid=pid"
1301 " WHERE tagid=%d AND tagtype>0 AND cid=blob.rid)",
1302 tagid
1303 );
1304 if( (tmFlags & TIMELINE_UNHIDE)==0 ){
1305 blob_appendf(&sql, " AND NOT EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=pid"
1306 " WHERE tagid=%d AND tagtype>0 AND cid=blob.rid)",
1307 TAG_HIDDEN);
1308 }
1309 }else{
1310 url_add_parameter(&url, "mionly", "1");
1311 }
1312 }else{
1313 url_add_parameter(&url, "t", zTagName);
1314

Keyboard Shortcuts

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