Fossil SCM

Expand the dates in the timeline description when using punctuationless dates in the query parameters.

drh 2019-03-27 13:22 trunk
Commit 99abe50b1fffc1942a67cd43cd18930f443726c65a6695f1769ecbdb2c1e14c2
1 file changed +8 -7
+8 -7
--- src/timeline.c
+++ src/timeline.c
@@ -1024,11 +1024,11 @@
10241024
10251025
/*
10261026
** Convert a symbolic name used as an argument to the a=, b=, or c=
10271027
** query parameters of timeline into a julianday mtime value.
10281028
*/
1029
-double symbolic_name_to_mtime(const char *z){
1029
+double symbolic_name_to_mtime(const char *z, const char **pzDisplay){
10301030
double mtime;
10311031
int rid;
10321032
const char *zDate;
10331033
if( z==0 ) return -1.0;
10341034
if( fossil_isdate(z) ){
@@ -1037,10 +1037,11 @@
10371037
}
10381038
zDate = fossil_expand_datetime(z, 1);
10391039
if( zDate!=0
10401040
&& (mtime = db_double(0.0, "SELECT julianday(%Q,fromLocal())", zDate))>0.0
10411041
){
1042
+ if( pzDisplay ) *pzDisplay = fossil_strdup(zDate);
10421043
return mtime;
10431044
}
10441045
rid = symbolic_name_to_rid(z, "*");
10451046
if( rid ){
10461047
mtime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", rid);
@@ -2093,13 +2094,13 @@
20932094
if( zSearch ){
20942095
blob_append_sql(&cond,
20952096
" AND (event.comment LIKE '%%%q%%' OR event.brief LIKE '%%%q%%')",
20962097
zSearch, zSearch);
20972098
}
2098
- rBefore = symbolic_name_to_mtime(zBefore);
2099
- rAfter = symbolic_name_to_mtime(zAfter);
2100
- rCirca = symbolic_name_to_mtime(zCirca);
2099
+ rBefore = symbolic_name_to_mtime(zBefore, &zBefore);
2100
+ rAfter = symbolic_name_to_mtime(zAfter, &zAfter);
2101
+ rCirca = symbolic_name_to_mtime(zCirca, &zCirca);
21012102
blob_append_sql(&sql, "%s", blob_sql_text(&cond));
21022103
if( rAfter>0.0 ){
21032104
if( rBefore>0.0 ){
21042105
blob_append_sql(&sql,
21052106
" AND event.mtime>=%.17g AND event.mtime<=%.17g"
@@ -2226,11 +2227,11 @@
22262227
zDate = db_text(0, "SELECT min(timestamp) FROM timeline /*scan*/");
22272228
if( (!zDate || !zDate[0]) && ( zAfter || zBefore ) ){
22282229
zDate = mprintf("%s", (zAfter ? zAfter : zBefore));
22292230
}
22302231
if( zDate ){
2231
- rDate = symbolic_name_to_mtime(zDate);
2232
+ rDate = symbolic_name_to_mtime(zDate, 0);
22322233
if( db_int(0,
22332234
"SELECT EXISTS (SELECT 1 FROM event CROSS JOIN blob"
22342235
" WHERE blob.rid=event.objid AND mtime<=%.17g%s)",
22352236
rDate-ONE_SECOND, blob_sql_text(&cond))
22362237
){
@@ -2241,11 +2242,11 @@
22412242
zDate = db_text(0, "SELECT max(timestamp) FROM timeline /*scan*/");
22422243
if( (!zDate || !zDate[0]) && ( zAfter || zBefore ) ){
22432244
zDate = mprintf("%s", (zBefore ? zBefore : zAfter));
22442245
}
22452246
if( zDate ){
2246
- rDate = symbolic_name_to_mtime(zDate);
2247
+ rDate = symbolic_name_to_mtime(zDate, 0);
22472248
if( db_int(0,
22482249
"SELECT EXISTS (SELECT 1 FROM event CROSS JOIN blob"
22492250
" WHERE blob.rid=event.objid AND mtime>=%.17g%s)",
22502251
rDate+ONE_SECOND, blob_sql_text(&cond))
22512252
){
@@ -2281,11 +2282,11 @@
22812282
style_submenu_element("Advanced", "%s",
22822283
url_render(&url, "advm", "1", "udc", "1"));
22832284
}
22842285
if( PB("showid") ) tmFlags |= TIMELINE_SHOWRID;
22852286
if( useDividers && zMark && zMark[0] ){
2286
- double r = symbolic_name_to_mtime(zMark);
2287
+ double r = symbolic_name_to_mtime(zMark, 0);
22872288
if( r>0.0 ) selectedRid = timeline_add_divider(r);
22882289
}
22892290
blob_zero(&sql);
22902291
db_prepare(&q, "SELECT * FROM timeline ORDER BY sortby DESC /*scan*/");
22912292
if( fossil_islower(desc.aData[0]) ){
22922293
--- src/timeline.c
+++ src/timeline.c
@@ -1024,11 +1024,11 @@
1024
1025 /*
1026 ** Convert a symbolic name used as an argument to the a=, b=, or c=
1027 ** query parameters of timeline into a julianday mtime value.
1028 */
1029 double symbolic_name_to_mtime(const char *z){
1030 double mtime;
1031 int rid;
1032 const char *zDate;
1033 if( z==0 ) return -1.0;
1034 if( fossil_isdate(z) ){
@@ -1037,10 +1037,11 @@
1037 }
1038 zDate = fossil_expand_datetime(z, 1);
1039 if( zDate!=0
1040 && (mtime = db_double(0.0, "SELECT julianday(%Q,fromLocal())", zDate))>0.0
1041 ){
 
1042 return mtime;
1043 }
1044 rid = symbolic_name_to_rid(z, "*");
1045 if( rid ){
1046 mtime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", rid);
@@ -2093,13 +2094,13 @@
2093 if( zSearch ){
2094 blob_append_sql(&cond,
2095 " AND (event.comment LIKE '%%%q%%' OR event.brief LIKE '%%%q%%')",
2096 zSearch, zSearch);
2097 }
2098 rBefore = symbolic_name_to_mtime(zBefore);
2099 rAfter = symbolic_name_to_mtime(zAfter);
2100 rCirca = symbolic_name_to_mtime(zCirca);
2101 blob_append_sql(&sql, "%s", blob_sql_text(&cond));
2102 if( rAfter>0.0 ){
2103 if( rBefore>0.0 ){
2104 blob_append_sql(&sql,
2105 " AND event.mtime>=%.17g AND event.mtime<=%.17g"
@@ -2226,11 +2227,11 @@
2226 zDate = db_text(0, "SELECT min(timestamp) FROM timeline /*scan*/");
2227 if( (!zDate || !zDate[0]) && ( zAfter || zBefore ) ){
2228 zDate = mprintf("%s", (zAfter ? zAfter : zBefore));
2229 }
2230 if( zDate ){
2231 rDate = symbolic_name_to_mtime(zDate);
2232 if( db_int(0,
2233 "SELECT EXISTS (SELECT 1 FROM event CROSS JOIN blob"
2234 " WHERE blob.rid=event.objid AND mtime<=%.17g%s)",
2235 rDate-ONE_SECOND, blob_sql_text(&cond))
2236 ){
@@ -2241,11 +2242,11 @@
2241 zDate = db_text(0, "SELECT max(timestamp) FROM timeline /*scan*/");
2242 if( (!zDate || !zDate[0]) && ( zAfter || zBefore ) ){
2243 zDate = mprintf("%s", (zBefore ? zBefore : zAfter));
2244 }
2245 if( zDate ){
2246 rDate = symbolic_name_to_mtime(zDate);
2247 if( db_int(0,
2248 "SELECT EXISTS (SELECT 1 FROM event CROSS JOIN blob"
2249 " WHERE blob.rid=event.objid AND mtime>=%.17g%s)",
2250 rDate+ONE_SECOND, blob_sql_text(&cond))
2251 ){
@@ -2281,11 +2282,11 @@
2281 style_submenu_element("Advanced", "%s",
2282 url_render(&url, "advm", "1", "udc", "1"));
2283 }
2284 if( PB("showid") ) tmFlags |= TIMELINE_SHOWRID;
2285 if( useDividers && zMark && zMark[0] ){
2286 double r = symbolic_name_to_mtime(zMark);
2287 if( r>0.0 ) selectedRid = timeline_add_divider(r);
2288 }
2289 blob_zero(&sql);
2290 db_prepare(&q, "SELECT * FROM timeline ORDER BY sortby DESC /*scan*/");
2291 if( fossil_islower(desc.aData[0]) ){
2292
--- src/timeline.c
+++ src/timeline.c
@@ -1024,11 +1024,11 @@
1024
1025 /*
1026 ** Convert a symbolic name used as an argument to the a=, b=, or c=
1027 ** query parameters of timeline into a julianday mtime value.
1028 */
1029 double symbolic_name_to_mtime(const char *z, const char **pzDisplay){
1030 double mtime;
1031 int rid;
1032 const char *zDate;
1033 if( z==0 ) return -1.0;
1034 if( fossil_isdate(z) ){
@@ -1037,10 +1037,11 @@
1037 }
1038 zDate = fossil_expand_datetime(z, 1);
1039 if( zDate!=0
1040 && (mtime = db_double(0.0, "SELECT julianday(%Q,fromLocal())", zDate))>0.0
1041 ){
1042 if( pzDisplay ) *pzDisplay = fossil_strdup(zDate);
1043 return mtime;
1044 }
1045 rid = symbolic_name_to_rid(z, "*");
1046 if( rid ){
1047 mtime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", rid);
@@ -2093,13 +2094,13 @@
2094 if( zSearch ){
2095 blob_append_sql(&cond,
2096 " AND (event.comment LIKE '%%%q%%' OR event.brief LIKE '%%%q%%')",
2097 zSearch, zSearch);
2098 }
2099 rBefore = symbolic_name_to_mtime(zBefore, &zBefore);
2100 rAfter = symbolic_name_to_mtime(zAfter, &zAfter);
2101 rCirca = symbolic_name_to_mtime(zCirca, &zCirca);
2102 blob_append_sql(&sql, "%s", blob_sql_text(&cond));
2103 if( rAfter>0.0 ){
2104 if( rBefore>0.0 ){
2105 blob_append_sql(&sql,
2106 " AND event.mtime>=%.17g AND event.mtime<=%.17g"
@@ -2226,11 +2227,11 @@
2227 zDate = db_text(0, "SELECT min(timestamp) FROM timeline /*scan*/");
2228 if( (!zDate || !zDate[0]) && ( zAfter || zBefore ) ){
2229 zDate = mprintf("%s", (zAfter ? zAfter : zBefore));
2230 }
2231 if( zDate ){
2232 rDate = symbolic_name_to_mtime(zDate, 0);
2233 if( db_int(0,
2234 "SELECT EXISTS (SELECT 1 FROM event CROSS JOIN blob"
2235 " WHERE blob.rid=event.objid AND mtime<=%.17g%s)",
2236 rDate-ONE_SECOND, blob_sql_text(&cond))
2237 ){
@@ -2241,11 +2242,11 @@
2242 zDate = db_text(0, "SELECT max(timestamp) FROM timeline /*scan*/");
2243 if( (!zDate || !zDate[0]) && ( zAfter || zBefore ) ){
2244 zDate = mprintf("%s", (zBefore ? zBefore : zAfter));
2245 }
2246 if( zDate ){
2247 rDate = symbolic_name_to_mtime(zDate, 0);
2248 if( db_int(0,
2249 "SELECT EXISTS (SELECT 1 FROM event CROSS JOIN blob"
2250 " WHERE blob.rid=event.objid AND mtime>=%.17g%s)",
2251 rDate+ONE_SECOND, blob_sql_text(&cond))
2252 ){
@@ -2281,11 +2282,11 @@
2282 style_submenu_element("Advanced", "%s",
2283 url_render(&url, "advm", "1", "udc", "1"));
2284 }
2285 if( PB("showid") ) tmFlags |= TIMELINE_SHOWRID;
2286 if( useDividers && zMark && zMark[0] ){
2287 double r = symbolic_name_to_mtime(zMark, 0);
2288 if( r>0.0 ) selectedRid = timeline_add_divider(r);
2289 }
2290 blob_zero(&sql);
2291 db_prepare(&q, "SELECT * FROM timeline ORDER BY sortby DESC /*scan*/");
2292 if( fossil_islower(desc.aData[0]) ){
2293

Keyboard Shortcuts

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