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

Reply via email to