@@ -169,10 +169,165 @@
169 169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_text(context, pPost->zWiki, -1, SQLITE_TRANSIENT);
170 170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_destroy(pPost);
171 171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
172 172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173 173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This routine generates the default "extra" text after the description
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in a timeline.
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Example: "(check-in: [abcdefg], user: drh, tags: trunk)"
180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This routine is used if no xExtra argument is supplied to
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** www_print_timeline().
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void defaultExtra(
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Stmt *pQuery, /* Current row of the timeline query */
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int tmFlags, /* Flags to www_print_timeline() */
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zThisUser, /* Suppress links to this user */
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zThisTag /* Suppress links to this tag */
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid = db_column_int(pQuery, 0);
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zUuid = db_column_text(pQuery, 1);
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDate = db_column_text(pQuery, 2);
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zType = db_column_text(pQuery, 7);
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zUser = db_column_text(pQuery, 4);
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTagList = db_column_text(pQuery, 8);
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int tagid = db_column_int(pQuery, 9);
197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDispUser = zUser && zUser[0] ? zUser : "anonymous";
198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (tmFlags & (TIMELINE_CLASSIC|TIMELINE_VERBOSE|TIMELINE_COMPACT))!=0 ){
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("(");
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Set to 1 for historical appearance. Set to 0 for new experimental look */
204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OLD_STYLE 1
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if OLD_STYLE
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (tmFlags & TIMELINE_CLASSIC)==0 ){
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zType[0]=='c' ){
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int isLeaf = db_column_int(pQuery, 5);
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isLeaf ){
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( has_closed_tag(rid) ){
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <span class='timelineLeaf'>Closed-Leaf</span>
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <span class='timelineLeaf'>Leaf</span>
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("check-in: %z%S</a> ",
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ href("%R/info/%!S",zUuid),zUuid);
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( zType[0]=='e' && tagid ){
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("technote: ");
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ hyperlink_to_event_tagid(tagid<0?-tagid:tagid);
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("artifact: %z%S</a> ",
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ href("%R/info/%!S",zUuid),zUuid);
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( zType[0]=='g' || zType[0]=='w' || zType[0]=='t'
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || zType[0]=='n' || zType[0]=='f'){
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("artifact: %z%S</a> ",href("%R/info/%!S",zUuid),zUuid);
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* OLD_STYLE */
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.perm.Hyperlink && fossil_strcmp(zDispUser, zThisUser)!=0 ){
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zLink;
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zType[0]!='f' || (tmFlags & TIMELINE_FORUMTXT)==0 ){
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zLink = mprintf("%R/timeline?u=%h&c=%t&y=a", zDispUser, zDate);
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zLink = mprintf("%R/timeline?u=%h&c=%t&y=a&vfx", zDispUser, zDate);
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("user: %z%h</a>", href("%z",zLink), zDispUser);
239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("user: %h", zDispUser);
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!
+ /* Generate the "tags: TAGLIST" at the end of the comment, together
244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** with hyperlinks to the tag list.
245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zTagList && zTagList[0]==0 ) zTagList = 0;
247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zTagList ){
248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.perm.Hyperlink ){
249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *z = zTagList;
251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob links;
252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&links);
253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( z && z[0] ){
254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; z[i] && (z[i]!=',' || z[i+1]!=' '); i++){}
255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zThisTag==0 || memcmp(z, zThisTag, i)!=0 || zThisTag[i]!=0 ){
256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&links,
257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "%z%#h</a>%.2s",
258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ href("%R/timeline?r=%#t&c=%t",i,z,zDate), i,z, &z[i]
259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&links, "%#h", i+2, z);
262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[i]==0 ) break;
264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z += i+2;
265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf(" tags: %s", blob_str(&links));
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&links);
268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf(" tags: %h", zTagList);
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( tmFlags & TIMELINE_SHOWRID ){
274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int srcId = delta_source_rid(rid);
275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( srcId ){
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf(" id: %z%d←%d</a>",
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ href("%R/deltachain/%d",rid), rid, srcId);
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf(" id: %z%d</a>",
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ href("%R/deltachain/%d",rid), rid);
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tag_private_status(rid);
284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !OLD_STYLE
286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (tmFlags & TIMELINE_CLASSIC)==0 ){
287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zType[0]=='e' && tagid ){
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zId = db_text(0,
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT substr(tagname,7) FROM tag WHERE tagid=abs(%d)", tagid);
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf(" technote: %z%S</a>",
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ href("%R/technote/%t",zId), zId);
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf(" hash: %z%S</a>", href("%R/info/%!S", zUuid), zUuid);
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* !OLD_STYLE */
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* End timelineDetail */
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (tmFlags & (TIMELINE_CLASSIC|TIMELINE_VERBOSE|TIMELINE_COMPACT))!=0 ){
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf(")");
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( tmFlags & TIMELINE_COMPACT ){
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </span></span>
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </span>
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SETTING: timeline-truncate-at-blank boolean default=off
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If enabled, check-in comments displayed on the timeline are truncated
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** at the first blank line of the comment text. The comment text after
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the first blank line is only seen in the /info or similar pages that
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** show details about the check-in.
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SETTING: timeline-tslink-info boolean default=off
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The hyperlink on the timestamp associated with each timeline entry,
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** on the far left-hand side of the screen, normally targets another
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** /timeline page that shows the entry in context. However, if this
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** option is turned on, that hyperlink targets the /info page showing
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the details of the entry.
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
174 329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
175 330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
176 331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Output a timeline in the web format given a query. The query
177 332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** should return these columns:
178 333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -194,11 +349,11 @@
194 349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zThisUser, /* Suppress links to this user */
195 350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zThisTag, /* Suppress links to this tag */
196 351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Matcher *pLeftBranch, /* Comparison function to use for zLeftBranch */
197 352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int selectedRid, /* Highlight the line with this RID value or zero */
198 353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int secondRid, /* Secondary highlight (or zero) */
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void (*xExtra)(int) /* Routine to call on each line of display */
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void (*xExtra)(Stmt*,int,const char*,const char*) /* generate "extra" text */
200 355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
201 356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mxWikiLen;
202 357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob comment;
203 358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int prevTagid = 0;
204 359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int suppressCnt = 0;
@@ -214,35 +369,21 @@
214 369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zStyle; /* Sub-name for classes for the style */
215 370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDateFmt;
216 371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTableId = timeline_tableid();
217 372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bTimestampLinksToInfo; /* True if timestamp hyperlinks go to the /info
218 373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** page rather than the /timeline page */
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zMainBranch = db_get("main-branch","trunk");
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
219 376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
220 377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cgi_is_loopback(g.zIpAddr) && db_open_local(0) ){
221 378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vid = db_lget_int("checkout", 0);
222 379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( xExtra==0 ) xExtra = defaultExtra;
223 381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPrevDate[0] = 0;
224 382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mxWikiLen = db_get_int("timeline-max-comment", 0);
225 383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dateFormat = db_get_int("timeline-date-format", 0);
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** SETTING: timeline-truncate-at-blank boolean default=off
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If enabled, check-in comments displayed on the timeline are truncated
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** at the first blank line of the comment text. The comment text after
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the first blank line is only seen in the /info or similar pages that
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** show details about the check-in.
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
234 384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bCommentGitStyle = db_get_int("timeline-truncate-at-blank", 0);
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** SETTING: timeline-tslink-info boolean default=off
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The hyperlink on the timestamp associated with each timeline entry,
239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** on the far left-hand side of the screen, normally targets another
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** /timeline page that shows the entry in context. However, if this
241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** option is turned on, that hyperlink targets the /info page showing
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the details of the entry.
243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
244 385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bTimestampLinksToInfo = db_get_boolean("timeline-tslink-info", 0);
245 386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (tmFlags & TIMELINE_VIEWS)==0 ){
246 387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tmFlags |= timeline_ss_cookie();
247 388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
248 389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tmFlags & TIMELINE_COLUMNAR ){
@@ -256,13 +397,11 @@
256 397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
257 398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zStyle = "Modern";
258 399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
259 400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDateFmt = P("datefmt");
260 401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDateFmt ) dateFormat = atoi(zDateFmt);
261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( tmFlags & TIMELINE_GRAPH ){
262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pGraph = graph_init();
263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pGraph = graph_init();
264 403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (tmFlags & TIMELINE_CHPICK)!=0
265 404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !db_table_exists("repository","cherrypick")
266 405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
267 406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tmFlags &= ~TIMELINE_CHPICK;
268 407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -275,23 +414,20 @@
275 414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isLeaf = db_column_int(pQuery, 5);
276 415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zBgClr = db_column_text(pQuery, 6);
277 416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDate = db_column_text(pQuery, 2);
278 417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zType = db_column_text(pQuery, 7);
279 418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zUser = db_column_text(pQuery, 4);
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zTagList = db_column_text(pQuery, 8);
281 419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tagid = db_column_int(pQuery, 9);
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zDispUser = zUser && zUser[0] ? zUser : "anonymous";
283 420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zBr = 0; /* Branch */
284 421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int commentColumn = 3; /* Column containing comment text */
285 422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int modPending; /* Pending moderation */
286 423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zDateLink; /* URL for the link on the timestamp */
287 424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int drawDetailEllipsis; /* True to show ellipsis in place of detail */
288 425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int gidx = 0; /* Graph row identifier */
289 426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isSelectedOrCurrent = 0; /* True if current row is selected */
290 427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zExtraClass = "";
291 428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char zTime[20];
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zMainBranch = db_get("main-branch","trunk");
293 429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
294 430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDate==0 ){
295 431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDate = "YYYY-MM-DD HH:MM:SS"; /* Something wrong with the repo */
296 432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
297 433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
modPending = moderation_pending(rid);
@@ -447,32 +583,34 @@
447 583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zType[0]=='c' && pGraph ){
448 584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nParent = 0;
449 585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCherrypick = 0;
450 586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
GraphRowId aParent[GR_MAX_RAIL];
451 587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static Stmt qparent;
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_static_prepare(&qparent,
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT pid FROM plink"
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE cid=:rid AND pid NOT IN phantom"
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " ORDER BY isprim DESC /*sort*/"
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_bind_int(&qparent, ":rid", rid);
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( db_step(&qparent)==SQLITE_ROW && nParent<count(aParent) ){
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aParent[nParent++] = db_column_int(&qparent, 0);
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_reset(&qparent);
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (tmFlags & TIMELINE_CHPICK)!=0 && nParent>0 ){
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static Stmt qcherrypick;
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_static_prepare(&qcherrypick,
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT parentid FROM cherrypick"
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE childid=:rid AND parentid NOT IN phantom"
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_bind_int(&qcherrypick, ":rid", rid);
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( db_step(&qcherrypick)==SQLITE_ROW && nParent<count(aParent) ){
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aParent[nParent++] = db_column_int(&qcherrypick, 0);
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nCherrypick++;
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_reset(&qcherrypick);
588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( tmFlags & TIMELINE_GRAPH ){
589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_static_prepare(&qparent,
590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT pid FROM plink"
591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE cid=:rid AND pid NOT IN phantom"
592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY isprim DESC /*sort*/"
593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_bind_int(&qparent, ":rid", rid);
595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( db_step(&qparent)==SQLITE_ROW && nParent<count(aParent) ){
596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aParent[nParent++] = db_column_int(&qparent, 0);
597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_reset(&qparent);
599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (tmFlags & TIMELINE_CHPICK)!=0 && nParent>0 ){
600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static Stmt qcherrypick;
601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_static_prepare(&qcherrypick,
602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT parentid FROM cherrypick"
603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE childid=:rid AND parentid NOT IN phantom"
604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_bind_int(&qcherrypick, ":rid", rid);
606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( db_step(&qcherrypick)==SQLITE_ROW && nParent<count(aParent) ){
607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aParent[nParent++] = db_column_int(&qcherrypick, 0);
608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCherrypick++;
609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_reset(&qcherrypick);
611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
474 612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
475 613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
gidx = graph_add_row(pGraph, rid, nParent, nCherrypick, aParent,
476 614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBr, zBgClr, zUuid,
477 615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isLeaf ? isLeaf + 2 * has_closed_tag(rid) : 0);
478 616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <div id="m%d(gidx)" class="tl-nodemark"></div>
@@ -611,11 +749,11 @@
611 749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
612 750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
613 751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </span>
614 752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&comment);
615 753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Generate extra information and hyperlinks to follow the comment.
754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Generate extra information and hyperlinks that follow the comment.
617 755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Example: "(check-in: [abcdefg], user: drh, tags: trunk)"
618 756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
619 757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( drawDetailEllipsis ){
620 758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <span class='timelineEllipsis' id='ellipsis-%d(rid)' \
621 759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ data-id='%d(rid)'>...</span>
@@ -629,101 +767,17 @@
629 767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
630 768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tmFlags & TIMELINE_COMPACT ){
631 769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("<span class='clutter' id='detail-%d'>",rid);
632 770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
633 771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("<span class='timeline%sDetail'>", zStyle);
634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (tmFlags & (TIMELINE_CLASSIC|TIMELINE_VERBOSE|TIMELINE_COMPACT))!=0 ){
635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("(");
636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (tmFlags & TIMELINE_CLASSIC)==0 ){
639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zType[0]=='c' ){
640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( isLeaf ){
641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( has_closed_tag(rid) ){
642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <span class='timelineLeaf'>Closed-Leaf</span>
643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <span class='timelineLeaf'>Leaf</span>
645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("check-in: %z%S</a> ",href("%R/info/%!S",zUuid),zUuid);
648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( zType[0]=='e' && tagid ){
649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("technote: ");
650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- hyperlink_to_event_tagid(tagid<0?-tagid:tagid);
651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("artifact: %z%S</a> ",href("%R/info/%!S",zUuid),zUuid);
653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( zType[0]=='g' || zType[0]=='w' || zType[0]=='t'
655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || zType[0]=='n' || zType[0]=='f'){
656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("artifact: %z%S</a> ",href("%R/info/%!S",zUuid),zUuid);
657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.perm.Hyperlink && fossil_strcmp(zDispUser, zThisUser)!=0 ){
660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zLink;
661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zType[0]!='f' || (tmFlags & TIMELINE_FORUMTXT)==0 ){
662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zLink = mprintf("%R/timeline?u=%h&c=%t&y=a", zDispUser, zDate);
663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zLink = mprintf("%R/timeline?u=%h&c=%t&y=a&vfx", zDispUser, zDate);
665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("user: %z%h</a>", href("%z",zLink), zDispUser);
667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("user: %h", zDispUser);
669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Generate the "tags: TAGLIST" at the end of the comment, together
672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** with hyperlinks to the tag list.
673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zTagList && zTagList[0]==0 ) zTagList = 0;
675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zTagList ){
676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.perm.Hyperlink ){
677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *z = zTagList;
679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob links;
680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_zero(&links);
681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( z && z[0] ){
682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; z[i] && (z[i]!=',' || z[i+1]!=' '); i++){}
683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zThisTag==0 || memcmp(z, zThisTag, i)!=0 || zThisTag[i]!=0 ){
684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(&links,
685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "%z%#h</a>%.2s",
686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- href("%R/timeline?r=%#t&c=%t",i,z,zDate), i,z, &z[i]
687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(&links, "%#h", i+2, z);
690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( z[i]==0 ) break;
692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- z += i+2;
693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf(" tags: %s", blob_str(&links));
695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&links);
696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf(" tags: %h", zTagList);
698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( tmFlags & TIMELINE_SHOWRID ){
702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int srcId = delta_source_rid(rid);
703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( srcId ){
704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf(" id: %z%d←%d</a>",
705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- href("%R/deltachain/%d",rid), rid, srcId);
706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf(" id: %z%d</a>",
708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- href("%R/deltachain/%d",rid), rid);
709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- tag_private_status(rid);
712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( xExtra ){
713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- xExtra(rid);
714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* End timelineDetail */
716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (tmFlags & (TIMELINE_CLASSIC|TIMELINE_VERBOSE|TIMELINE_COMPACT))!=0 ){
717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf(")");
718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xExtra(pQuery, tmFlags, zThisUser, zThisTag);
719 773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tmFlags & TIMELINE_COMPACT ){
720 774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </span></span>
721 775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
722 776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </span>
723 777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
725 779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Generate the file-change list if requested */
726 780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (tmFlags & (TIMELINE_FCHANGES|TIMELINE_FRENAMES))!=0
727 781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& zType[0]=='c' && g.perm.Hyperlink
728 782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
729 783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int inUl = 0;
@@ -909,11 +963,13 @@
909 963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int omitDescenders; /* True to omit descenders */
910 964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int scrollToSelect; /* True to scroll to the selection */
911 965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int dwellTimeout; /* Milliseconds to wait for tooltips to show */
912 966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int closeTimeout; /* Milliseconds to wait for tooltips to close */
913 967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *aiMap; /* The rail map */
968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bNoGraph; /* True to show a minimal graph */
914 969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bNoGraph = (tmFlags & TIMELINE_GRAPH)==0;
915 971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRailPitch = atoi(PD("railpitch","0"));
916 972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
showArrowheads = skin_detail_boolean("timeline-arrowheads");
917 973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
circleNodes = skin_detail_boolean("timeline-circle-nodes");
918 974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
colorGraph = skin_detail_boolean("timeline-color-graph-lines");
919 975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTopRow = pGraph->pFirst ? pGraph->pFirst->idx : 0;
@@ -931,11 +987,11 @@
931 987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ "nomo": %d(PB("nomo")),
932 988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ "iTopRow": %d(iTopRow),
933 989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ "omitDescenders": %d(omitDescenders),
934 990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ "fileDiff": %d(fileDiff),
935 991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ "scrollToSelect": %d(scrollToSelect),
936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ "nrail": %d(pGraph->mxRail+1),
992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ "nrail": %d(bNoGraph?1:pGraph->mxRail+1),
937 993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ "baseUrl": "%R",
938 994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ "dwellTimeout": %d(dwellTimeout),
939 995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ "closeTimeout": %d(closeTimeout),
940 996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ "hashDigits": %d(hash_digits(1)),
941 997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ "bottomRowId": "btm-%d(iTableId)",
@@ -993,12 +1049,16 @@
993 1049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aiMap = pGraph->aiRailMap;
994 1050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
995 1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int k = 0;
996 1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("{\"id\":%d,", pRow->idx);
997 1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("\"bg\":\"%s\",", pRow->zBgClr);
998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_printf("\"r\":%d,", pRow->iRail>=0 ? aiMap[pRow->iRail] : -1);
999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pRow->bDescender ){
1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bNoGraph ){
1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("\"r\":0,"); /* Chng to ":-1" to omit node circles */
1056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("\"r\":%d,", pRow->iRail>=0 ? aiMap[pRow->iRail] : -1);
1058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRow->bDescender && !bNoGraph ){
1000 1060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("\"d\":%d,", pRow->bDescender);
1001 1061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1002 1062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRow->mergeOut>=0 ){
1003 1063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("\"mo\":%d,", aiMap[pRow->mergeOut]);
1004 1064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRow->mergeUpto==0 ) pRow->mergeUpto = pRow->idx;
@@ -1005,11 +1065,13 @@
1005 1065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("\"mu\":%d,", pRow->mergeUpto);
1006 1066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRow->cherrypickUpto>0 && pRow->cherrypickUpto<=pRow->mergeUpto ){
1007 1067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("\"cu\":%d,", pRow->cherrypickUpto);
1008 1068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1009 1069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pRow->isStepParent ){
1070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bNoGraph ){
1071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf("\"u\":-1,");
1072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pRow->isStepParent ){
1011 1073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("\"sb\":%d,", pRow->aiRiser[pRow->iRail]);
1012 1074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1013 1075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf("\"u\":%d,", pRow->aiRiser[pRow->iRail]);
1014 1076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1015 1077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = 0;
1016 1078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!