On Jul 7, 2011, at 9:48 PM, Tim M wrote: > What I'm looking for is this: > > Separate the act of actually gathering the data from the GnuCash database > from transforming it for display, so that the output can be made much more > interactive and easy to style and make 'pretty' :). Use a well known > programming language to aggregate the data to make it easier to create new > reports which output different sets of data. > > I've thought about this a little bit, and here is what I am thinking. Let me > know if this sounds un/reasonable or just plain incorrect. (Note that I am > basing this off of not being familiar yet with how the current scheme > architecture actually manages pulling the data out of gnucash, so please > correct me where I am wrong or point out the significant flaws) > > 1. Create the 'new' reporting system alongside the existing one so that the > reports do not suffer until the existing functionality can be fully replaced > by the new system. After all reports are replaced and working, the old > scheme code could be pulled. > 2. Create a set of libraries and/or use the existing gnucash libraries for > querying information from the database. Based on the discussion, I presume C > or Objective C would be best and just avoid Python/Scheme altogether (I am > not sure how the scheme system actually performs the data queries right now). > If all the necessary code is already in place, then this does not require > any work. > 3. Using these libraries, create the code for aggregating the data (also in C > or Objective C) for each report. A single prototype report would be OK to > start. Output the report data as structured XML. The XML data should adhere > to an XML schema. > 4. For each report, create an XSLT file which will transform the data into > HTML/XHTML for display. > 5. A small amount of javascript would be needed to perform the actual XSLT > transformation but it would be pretty small. > 6. Style the page elements using CSS. Also, I think the jqplot patch that > has been made could be migrated in to the new reporting system, as those > graphs look really nice. > > > I think there are several benefits to this approach: > > 1. Currently reports can only be exported as HTML. By making the reporting > code export an XML data structure, reports could be easily exported from > GnuCash as XML (pre-transformation) or as HTML (post-transformation). > 2. Anyone could write their own XSLT transformation file to display the data > differently. > 3. The actual XSLT, HTML, and CSS code would be very easy to read and modify > by anyone familiar with it. The backend reports would still be in > C/Objective C for compiling the data and as such require some coding > knowledge, but it would be much easier to start using than the existing > scheme code. > 4. The XSLT and CSS could be very easily modified and applied not only inside > of GnuCash, but a user could also take the XSLT and CSS scripts, modify and > apply them to the exported XML reports to give it their own look without > touching the GnuCash code base at all. For example they might want to style > a report with a company logo or different colors or other graphical elements. > 5a. In the future, it would be possible to provide multiple different XSLT > and/or CSS styles for the reports so users could select the appearance of the > reports. (If someone writes additional styles) > 5b. In the future, it would be possible to allow users to import their own > style sheets into GnuCash and apply them to the reports. (if someone writes > the code to manage the import and style selection) > 6. No reliance on Scheme or Python. Minimal Javascript, but that should be > handled easily by webkit.
I like the idea of XML output with XSLT to transform it to HTML. That would be a great enhancement. Moving away from a heavy-weight general language like Scheme or Python is the right directin, but switching to C is unfortunately a step backward for custom reports. The current Scheme query interface makes it difficult to write a custom query; a C (or any other compiled language) query would make it impossible for anyone who isn't able to recompile Gnucash. Besides, C isn't really very expressive as a query language. Something SQL-like would be better. A query-by-example GUI would be best. I suppose that could be split off as a separate project, though, so that the Scheme query capability would remain for custom reports while the standard reports have their queries written in C. Regards, John Ralls _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel