# 20111230¶

The Data Control Listing was too slow. Some more changes that go into 1.3.3:

• New field body_html now stores the result of body(). Removed fields ‘header’ and ‘footer’ because do text from html(self.header()) doesn’t seem to work when used in a page header or footer. Changed config/lino/DataControlListing/Default.odt
• .odt files were missing in source distribution
• settings.LINO.site_config didn’t update when the SiteConfig record had been modified.

And there were some plain bugs in my algorithm. Added new function lino.utils.overlap() with testcases.

## CustomTable¶

In the evening I started a little revolution: I split about half of the code of lino.core.table.Table into lino.core.table.AbstractTable which becomes common base for the new lino.core.table.CustomTable class. A Custom Table doesn’t work on a Model but on some arbitrary data. First example is lino.apps.dsbe.models.OverviewClientsByUser who does exactly the same as lino.apps.dsbe.models.persons_by_user(), but in a very different way.

This change opens new dimensions for writing “Listings”. One “detail” is missing: how to do a user form for entering volatile parameters to such CustomTables.