Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [birt-dev] Better charting (was better graphics)
  • From: Henning von Bargen <H.vonBargen@xxxxxxx>
  • Date: Tue, 7 Mar 2023 15:21:17 +0000
  • Accept-language: de-DE, en-US
  • Arc-authentication-results: i=1; 1; spf=pass; dmarc=pass action=none; dkim=pass; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed;; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Vk6enwJav+fEt+xh6nyiOa53nGpeabFRlbid2qWq2CU=; b=RxX9+23YmVJieHlarhoEoVXdyqVnGCif5QcKnOThpBbqOfMBrsyz+345HVCwsRA+iYl+M/muTR+tiCBHsXZuy+zq05VIhI5/0k/MXltLF48s5ftZKYb1O0QRw5YIVrYfocqjZVt8TNP6w85zjNAA+oCFVbjN9T//8Tym1E+acV8gWbHsCFuopER3jh4f5N9tPacvmZ0O2a7PiMAcGXpFj0f+SdSuVBrHx5JkVPhLGkATVmKIY13JVvkO4cfcFB8GmIMG+eoptaJjoP38fXmEoLxyFTYyvVdYqlAj4OVMx+u3CSCrcV0PpIdUfmTPFfjOTIygsjIdvTkVPi2Cv+1pHw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901;; cv=none; b=gJu1l1yjgRoa5t6AnrfQHWyiByLg+ifOzD+z3AP7ohZBuBqMfHWF9mqoC8rxmkN1WRWMNdvBi/FwyTBt7Men987nzhVjTh4muum2klcwmfTvVNUxwWehR+gKdPuwEm5Hwzp+5P9P8x+F+Cp0JfYBAvmYGAS8dHqpitDo6I7pBVv9eikTjbWui6Hl3S4D0CPViAje09uR2638qpmgLGmwu+BSrp7nJgbrBe4qzPzHjStLhI7EJqWvzcFk29zRRE2XPqGjxw5MIh22FGgWabU6OEIqyHelmAJfmcAJOeevtBgpmviBrqtxpDp6NM6aky1QWtRnNKNB5YspCgFwOkEBaw==
  • Delivered-to: birt-dev@xxxxxxxxxxx
  • List-archive: <>
  • List-help: <>
  • List-subscribe: <>, <>
  • List-unsubscribe: <>, <>
  • Thread-index: AQHZUO3PLAB414HB0kOnnKltY5nmZa7vXX/w
  • Thread-topic: [birt-dev] Better charting (was better graphics)

Yair Lenga wrote:

> I do not think that BIRT need “BIRT charting” for client side charting (like the server side). There are multiple amazing packages out there, with unique functions, use cases, etc.
> Instead, I believe we should look for a way to export all the chart information (series, data, attributes, properties, including user defined  attributes) into json object, 
> and invoke JavaScript callbacks, passing the data. Different plugins can then be developed to connect to different packages.
> I would even go to the point that for minimal implementation, there is no need for HTML preview - in the editor. The existing server side can initially be used.
> Once we have exporter, we can see what connectors will be available, and pick one (or more …) that can be bundled.

Feel free to develop and contribute something like that, as a plugin.
You can use the existing chart plugin as a template.

I SERIOUSLY doubt the BIRT open source community can maintain it
We need to stay focused on the core functionality of BIRT, which is to convert data into documents.
The situation would be different if some company is willing to pay 2-3 full-time developers for several months or years.

Anyway, if you can develop a chart plugin that gets the chart data from a JSON service of the BIRT server on demand in a secure way and renders on the client, that would be great.

Step one would be to specify such a JSON service in a generic way.
Parameters which I think would be needed generically: 
- An ID for the currently shown report (I don't know, but I think this must already exist anyway for those reports with pagination in the browser).
- An instance ID for the chart in question.
- A generic JSON structure to specify which data exactly the client requests.

Step two, then, is to develop the backend side:
- Create the JSON service as part of the server.
- Create an alternative chart plugin which does not render charts, but instead can interact with and provide data for the JSON service.

Step three is to develop the client side:
- Create a Javascript/CSS/HTML client library which interacts with the user and the JSON service and renders the chart as interactive HTML/Canvas/Image/SVG.
- Integrate this Javascript/CSS/HTML into the HTML created by the server.

Of course, all this interactivity only works for HTML reports.

For all other output formats (e.g., PDF), a solution is needed which runs on the server and creates static output as an Image or SVG.
Now this part is *really* tricky because this means you have to simulate a modern browser on the server side!

Developing a *dashboard* solution is something completely different, though.
Just to mention some points which users would expect and which you must think about:
 - Access control
 - An editor to create your own dashboards
 - High performance
 - Drill-down
 - Zoom in and out

Take HomeAssistant with its Lovelace UI as an example.

To reach these goals, it is not only necessary to develop software for all this - the data access API and the data structures have to be optimized for this.
 - For example, for efficient zooming in and out of time-based data with large datasets, you need to have data structures which allow this, e.g., not only the raw individual values must be stored, but also statistics per hour/day/week/month.
 - And of course, you need some kind of URL structure.
 - In many cases computing the statistics you want to show in the dashboards may be too slow to do it on-demand, so you'll have to pre-generate and cache them.

As much as I would love to see interactive charts in BIRT or even dashboards, I don't think we'll find volunteers to develop and maintain it.


Back to the top