Composition

Assemble the landing page from content blocks

Everything the app can show is now in place — text, data, charts, views. The landing page is their composition: an ordered sequence of content blocks on the root document. Two block types exist: ldh:XHTML holds authored markup, and ldh:Object embeds any other resource — a chart, a view, a document. Anything that is not markup gets wrapped in an object block.

The demo's finished root document interleaves them into an executive dashboard:

<> a def:Root ;
    dct:title "Northwind Traders" ;
    rdf:_1 <#page-header> ;          # XHTML   — title and pitch
    rdf:_2 <#overview-intro> ;       # XHTML   — dashboard intro
    rdf:_3 <#sales-trend-block> ;    # Object  — monthly sales line chart
    rdf:_4 <#revenue-by-country-block> ; # Object — geo chart
    rdf:_5 <#top-selling-products> ; # Object  — product ranking
    rdf:_6 <#top-manager-header> ;   # XHTML   — section heading
    rdf:_7 <#top-manager> ;          # Object  — employee of the quarter
    rdf:_8 <#navigation-prompt> ;    # XHTML   — where to go next
    rdf:_9 <#select-children> .      # Object  — children view

The narrative rhythm — prose, then evidence, then prose — is an editorial choice, and it is made entirely in data: reordering the page is renumbering rdf:_N. In the browser the same composition is drag-and-drop in edit mode; from the command line it is the root.ttl from the first stage grown to its final form, applied with the same PUT.

What you now see

The homepage is the finished application: branded header, live charts over the imported graph, and navigation into the containers — every pixel of it a rendering of one document's description.

Next: Publish