On 3/16/15, Warren Young <w...@etr-usa.com> wrote: > On Mar 16, 2015, at 11:15 AM, Richard Hipp <d...@sqlite.org> wrote: >> >> The timeline graph is drawn using JS. Without JS you do not get the >> very nice timeline graph. I don't see any reasonable way around that. > > Hi, it’s the resident pro web app developer checking in again. :) > > There are at least three ways to create the timeline without Javascript. > > 1. Build the timeline as a dynamic PNG on the server side, then serve the > client a URL to that dynamic PNG. This requires libpng or similar, some > line-drawing API on top of that (e.g. libgd, SDL, etc.), and ideally a place > to cache the generated PNG so it doesn’t have to be re-generated until a > timeline update invalidates it. > > We actually have code doing this, written before the next two options became > widely available. We’ll get around to rewriting it RSN.
The main difficulty is knowing where to put each node of the graph, since the vertical space between nodes depends on how long the check-in comment is and how it wraps. And if the operator resizes the browser window to be narrower or wider, then the comments will wrap at different places and change the spacing. I didn't get far enough down this path to investigate the second potential problem: limits on the sizes of GIF/PNG files. Some of the graphs can be *very tall* - hundreds of thousands or perhaps millions of pixels. Is there a limit on the height of a GIF/PNG file? And will browsers successfully render very tall GIF/PNGs. Or would it be necessary to bring the image up into segments, with a separate server round-trip and CGI-process invocation for each chunk? > > 2. Generate the timeline server-side as SVG, and serve it inline on the > timeline page. Of the mainstream browsers with significant market share, > only IE8 doesn’t support SVG: > > http://caniuse.com/#search=svg > > The only reason there’s still a significant chunk of IE8 out there is that > that’s the last version of IE that will run on XP. No developer should > still be running an unsupported 13 year old OS on his desktop anyway. Is it wrong to think that any browser that does not support JS probably also does not support SVG? I've never worked with SVG, so I don't know its limitations and capabilities. Can it create the very tall graphics required by the Fossil timeline? > > 3. Generate the timeline via <canvas>. That also requires JS, no? Some early versions of Fossil actually did this. The main problem is that the canvas is limited in size to 32768 pixels high. (What was the W3C thinking when they speced this!!!) Lots of timelines are much taller than that. -- D. Richard Hipp d...@sqlite.org _______________________________________________ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users