@@ -187,62 +187,63 @@
187 187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
188 188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define BRL_CLOSED_ONLY 0x001 /* Show only closed branches */
189 189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define BRL_OPEN_ONLY 0x002 /* Show only open branches */
190 190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define BRL_BOTH 0x003 /* Show both open and closed branches */
191 191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define BRL_OPEN_CLOSED_MASK 0x003
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define BRL_MTIME 0x004 /* Include lastest check-in time */
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define BRL_ORDERBY_MTIME 0x008 /* Sort by MTIME. (otherwise sort by name)*/
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BRL_ORDERBY_MTIME 0x004 /* Sort by MTIME. (otherwise sort by name)*/
194 193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
195 194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* INTERFACE */
196 195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
197 196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
198 197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Prepare a query that will list branches.
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If (which<0) then the query pulls only closed branches. If
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (which>0) then the query pulls all (closed and opened)
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** branches. Else the query pulls currently-opened branches.
203 198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
204 199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void branch_prepare_list_query(Stmt *pQuery, int brFlags){
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- switch( brFlags & BRL_OPEN_CLOSED_MASK ){
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case BRL_CLOSED_ONLY: {
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_prepare(pQuery,
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT value FROM tagxref"
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE tagid=%d AND value NOT NULL "
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "EXCEPT "
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT value FROM tagxref"
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE tagid=%d"
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND rid IN leaf"
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND NOT %z"
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " ORDER BY value COLLATE nocase /*sort*/",
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- TAG_BRANCH, TAG_BRANCH, leaf_is_closed_sql("tagxref.rid")
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case BRL_BOTH: {
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_prepare(pQuery,
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT DISTINCT value FROM tagxref"
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE tagid=%d AND value NOT NULL"
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND rid IN leaf"
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " ORDER BY value COLLATE nocase /*sort*/",
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- TAG_BRANCH
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case BRL_OPEN_ONLY: {
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_prepare(pQuery,
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT DISTINCT value FROM tagxref"
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE tagid=%d AND value NOT NULL"
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND rid IN leaf"
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND NOT %z"
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " ORDER BY value COLLATE nocase /*sort*/",
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- TAG_BRANCH, leaf_is_closed_sql("tagxref.rid")
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob sql = BLOB_INITIALIZER;
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&sql);
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Begin the query. */
204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append_sql(&sql,
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT tagxref.value AS name"
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ", max(event.mtime) AS mtime"
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ", %z AS closed"
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ", (SELECT tagxref.value"
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM plink CROSS JOIN tagxref"
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE plink.pid=event.objid"
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND tagxref.rid=plink.cid"
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND tagxref.tagid=%d"
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND tagtype>0) AS mergeto"
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ", count(*) AS cicount"
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ", (SELECT uuid FROM blob WHERE rid=tagxref.rid) AS latest"
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ", event.bgcolor AS bgcolor"
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM tagxref, tag, event"
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE tagxref.tagid=tag.tagid"
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND tagxref.tagtype>0"
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND tag.tagname='branch'"
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND event.objid=tagxref.rid",
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ leaf_is_closed_sql("tagxref.rid"), TAG_BRANCH);
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Group by name to implement the cicount column. */
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append_sql(&sql, " GROUP BY name");
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Apply open/closed filtering if requested. */
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (brFlags & BRL_OPEN_CLOSED_MASK)==BRL_CLOSED_ONLY ){
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append_sql(&sql, " HAVING min(closed)");
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( (brFlags & BRL_OPEN_CLOSED_MASK)==BRL_OPEN_ONLY ){
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append_sql(&sql, " HAVING NOT min(closed)");
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Apply the requested sort order. */
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( brFlags & BRL_ORDERBY_MTIME ){
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append_sql(&sql, " ORDER BY mtime DESC");
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append_sql(&sql, " ORDER BY name COLLATE nocase");
239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Prepare the query. */
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(pQuery, "%s", blob_sql_text(&sql));
243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&sql);
244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
244 245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
245 246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
246 247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: branch
247 248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
248 249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Usage: %fossil branch SUBCOMMAND ... ?OPTIONS?
@@ -307,63 +308,79 @@
307 308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("branch subcommand should be one of: "
308 309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"new list ls");
309 310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
310 311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
311 312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static const char brlistQuery[] =
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ SELECT
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ tagxref.value,
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ max(event.mtime),
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ EXISTS(SELECT 1 FROM tagxref AS tx
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ WHERE tx.rid=tagxref.rid
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ AND tx.tagid=(SELECT tagid FROM tag WHERE tagname='closed')
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ AND tx.tagtype>0),
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ (SELECT tagxref.value
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ FROM plink CROSS JOIN tagxref
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ WHERE plink.pid=event.objid
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ AND tagxref.rid=plink.cid
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ AND tagxref.tagid=(SELECT tagid FROM tag WHERE tagname='branch')
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ AND tagtype>0),
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ count(*),
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ (SELECT uuid FROM blob WHERE rid=tagxref.rid),
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ event.bgcolor
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ FROM tagxref, tag, event
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ WHERE tagxref.tagid=tag.tagid
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ AND tagxref.tagtype>0
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ AND tag.tagname='branch'
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ AND event.objid=tagxref.rid
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ GROUP BY 1
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ ORDER BY 2 DESC;
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ;
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
338 313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This is the new-style branch-list page that shows the branch names
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** together with their ages (time of last check-in) and whether or not
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** they are closed or merged to another branch.
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** WEBPAGE: brlist
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Show a sortable list of branches.
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Query parameters:
342 318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Control jumps to this routine from brlist_page() (the /brlist handler)
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if there are no query parameters.
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** all Same as open&closed
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** open Show open branches
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** closed Show closed branches
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** colors Show assigned branch colors (alias: colortest)
345 323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void new_brlist_page(void){
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void brlist_page(void){
347 325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
348 326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
double rNow;
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int show_colors = PB("colors");
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int colors, flags = BRL_ORDERBY_MTIME;
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Intepret colortest as colors=1. */
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( PB("colortest") ){
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_replace_query_parameter("colors", "1");
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_delete_query_parameter("colortest");
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Interpret all as open=1&closed=1&normal=1&hidden=1. */
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( PB("all") ){
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_replace_query_parameter("open", "1");
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_replace_query_parameter("closed", "1");
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* cgi_replace_query_parameter("normal", "1");
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_replace_query_parameter("hidden", "1");*/
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_delete_query_parameter("all");
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Interpret open=0&closed=0 (or omitted) as open=1&closed=1. */
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !PB("open") && !PB("closed") ){
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_replace_query_parameter("open", "1");
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_replace_query_parameter("closed", "1");
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Interpret normal=0&hidden=0 (or omitted) as normal=1&hidden=1. */
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*if( !PB("normal") && !PB("hidden") ){
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_replace_query_parameter("normal", "1");
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_replace_query_parameter("hidden", "1");
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }*/
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Process query parameters. */
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ colors = PB("colors");
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( PB("open" ) ){flags |= BRL_OPEN_ONLY ;}
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( PB("closed") ){flags |= BRL_CLOSED_ONLY;}
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
350 361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
351 362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
352 363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header("Branches");
353 364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_adunit_config(ADUNIT_RIGHT_OK);
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_checkbox("colors", "Use Branch Colors", 0);
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_checkbox("colors", "Colors", 0);
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_checkbox("open", "Open", 0);
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_checkbox("closed", "Closed", 0);
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*style_submenu_checkbox("normal", "Normal", 0);
369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_checkbox("hidden", "Hidden", 0);*/
355 370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_anonymous_available();
356 371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_prepare(&q, brlistQuery/*works-like:""*/);
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ branch_prepare_list_query(&q, flags);
358 373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rNow = db_double(0.0, "SELECT julianday('now')");
359 374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <div class="brlist"><table id="branchlisttable">
360 375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <thead><tr>
361 376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <th>Branch Name</th>
362 377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <th>Age</th>
363 378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <th>Check-ins</th>
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (flags & BRL_OPEN_CLOSED_MASK) == BRL_BOTH ){
364 380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <th>Status</th>
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
365 382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <th>Resolution</th>
366 383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </tr></thead><tbody>
367 384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
368 385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zBranch = db_column_text(&q, 0);
369 386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
double rMtime = db_column_double(&q, 1);
@@ -380,20 +397,22 @@
380 397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBgClr = 0;
381 398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
382 399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBgClr = hash_color(zBranch);
383 400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
384 401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zBgClr && zBgClr[0] && show_colors ){
402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zBgClr && zBgClr[0] && colors ){
386 403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <tr style="background-color:%s(zBgClr)">
387 404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
388 405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <tr>
389 406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
390 407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <td>%z(href("%R/timeline?n=100&r=%T",zBranch))%h(zBranch)</a></td>
391 408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <td data-sortkey="%016llx(-iMtime)">%s(zAge)</td>
392 409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <td>%d(nCkin)</td>
393 410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(zAge);
394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <td>%s(isClosed?"closed":"")</td>
411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (flags & BRL_OPEN_CLOSED_MASK) == BRL_BOTH ){
412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td>%s(isClosed?"closed":"")</td>
413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
395 414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zMergeTo ){
396 415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <td>merged into
397 416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ %z(href("%R/timeline?f=%!S",zLastCkin))%h(zMergeTo)</a></td>
398 417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
399 418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <td></td>
@@ -404,114 +423,10 @@
404 423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
405 424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
output_table_sorting_javascript("branchlisttable","tkNtt",2);
406 425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_footer();
407 426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
408 427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** WEBPAGE: brlist
411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Show a list of branches. With no query parameters, a sortable table
412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is used to show all branches. If query parameters are present a
413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** fixed bullet list is shown.
414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Query parameters:
416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** all Show all branches
418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** closed Show only closed branches
419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** open Show only open branches (default behavior)
420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** colortest Show all branches with automatic color
421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void brlist_page(void){
423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Stmt q;
424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int cnt;
425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int showClosed = P("closed")!=0;
426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int showAll = P("all")!=0;
427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int showOpen = P("open")!=0;
428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int colorTest = P("colortest")!=0;
429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int brFlags = BRL_OPEN_ONLY;
430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( showClosed==0 && showAll==0 && showOpen==0 && colorTest==0 ){
432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- new_brlist_page();
433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return;
434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- login_check_credentials();
436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( colorTest ){
438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- showClosed = 0;
439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- showAll = 1;
440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( showAll ) brFlags = BRL_BOTH;
442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( showClosed ) brFlags = BRL_CLOSED_ONLY;
443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_header("%s", showClosed ? "Closed Branches" :
445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- showAll ? "All Branches" : "Open Branches");
446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("Timeline", "brtimeline");
447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( showClosed ){
448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("All", "brlist?all");
449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("Open", "brlist?open");
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( showAll ){
451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("Closed", "brlist?closed");
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("Open", "brlist");
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("All", "brlist?all");
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("Closed", "brlist?closed");
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !colorTest ){
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("Color-Test", "brlist?colortest");
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_submenu_element("All", "brlist?all");
461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- login_anonymous_available();
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if 0
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_sidebox_begin("Nomenclature:", "33%");
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <ol>
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <li> An <div class="sideboxDescribed">%z(href("brlist"))
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ open branch</a></div> is a branch that has one or more
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <div class="sideboxDescribed">%z(href("leaves"))open leaves.</a></div>
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ The presence of open leaves presumably means
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ that the branch is still being extended with new check-ins.</li>
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <li> A <div class="sideboxDescribed">%z(href("brlist?closed"))
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ closed branch</a></div> is a branch with only
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <div class="sideboxDescribed">%z(href("leaves?closed"))
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ closed leaves</a></div>.
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ Closed branches are fixed and do not change (unless they are first
476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ reopened).</li>
477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ </ol>
478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_sidebox_end();
479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- branch_prepare_list_query(&q, brFlags);
482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cnt = 0;
483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( db_step(&q)==SQLITE_ROW ){
484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zBr = db_column_text(&q, 0);
485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cnt==0 ){
486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( colorTest ){
487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <h2>Default background colors for all branches:</h2>
488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( showClosed ){
489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <h2>Closed Branches:</h2>
490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( showAll ){
491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <h2>All Branches:</h2>
492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <h2>Open Branches:</h2>
494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <ul>
496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cnt++;
497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( colorTest ){
499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zColor = hash_color(zBr);
500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <li><span style="background-color: %s(zColor)">
501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ %h(zBr) → %s(zColor)</span></li>
502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <li>%z(href("%R/timeline?r=%T&n=200",zBr))%h(zBr)</a></li>
504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cnt ){
507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ </ul>
508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_finalize(&q);
510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_footer();
511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
513 428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
514 429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is called while for each check-in that is rendered by
515 430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the timeline of a "brlist" page. Add some additional hyperlinks
516 431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the end of the line.
517 432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
518 433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!