Wgraph:Sample Genealogy 3

From FollowTheScore
Jump to: navigation, search

We add a "semantic template" which hides Wgraph layout syntax completely

Can we go any further in our search for abstraction? Yes, we can put the semantics of genealogy in foreground instead of the graphical aspect. This will open new doors. So our next step is to define a template which carries the semantics of the application domain.

  • In our example this means to define a genealogy template for a person which expects parameters like 'father' and 'mother'.
  • As not all parameters may be filled we have to take care for such situations.
  • Authors using the person template may add spaces and line breaks in the template call. We do not want to see these whitespace characters in the graph. WGL´s mechanism of string concatenation and white space stripping is quite helpful in this regard.

Now the source for our graph begins to look really nice:

{{#wgraph: svg | thumb = 80 |

   nodetype male    { shape box color #ddddff bordercolor #9999ff width 140 textwidth 20 }
 nodetype female  { shape box color #ffdddd bordercolor #ff9999 width 140 textwidth 20 }
 edgetype father   { color #7777ff backarrowsize 10 backarrowstyle solid arrowsize 0 }
 edgetype mother   { color #ff7777 backarrowsize 10 backarrowstyle solid arrowsize 0 }
 edgetype marriage { kind rightnear arrowstyle line  backarrowstyle line backarrowsize 10 color #ff77ff }
 nodetype info     { color #f0f0f0 borderstyle dashed bordercolor #e0e0e0 }
 edgetype info     { kind near arrowstyle none linestyle dotted color lightgray }
 nodetype 'undefined node' { bordercolor red 
                          // label '%%?' 
 }
 orientation bottom_to_top
 splines yes


 node " John Smith  
  "  { type  male
    label " John Smith  
  " "\n*" "21.06.1952" }


edge from " John Smith

  " to " John Smith  
  " "_info" { type info }
 node " John Smith  
  " "_info" { type info label "that & this" }

edge from " John Smith

  " to "Bella Smith" {type marriage label "01.03.1985" }
 node " Bella Smith     "  { type female  label " Bella Smith     " "\n*" "03.04.1955" }


edge from " Bella Smith " to " Bella Smith " "_info" { type info }

 node " Bella Smith     " "_info" { type info label "this and that" }


 node " Dave Smith      "  { type male    label " Dave Smith      " "\n*" "30.05.1986" }

edge from " Dave Smith " to "Bella Smith" {type mother} edge from " Dave Smith " to "John Smith" {type father}


 node " Paul Smith      "  { type male    label " Paul Smith      " "\n*" "28.02.1988" }

edge from " Paul Smith " to "Bella Smith" {type mother} edge from " Paul Smith " to "John Smith" {type father}


 node " Susan Smith     "  { type female  label " Susan Smith     " "\n*" "04.06.1995" }

edge from " Susan Smith " to "Bella Smith" {type mother} edge from " Susan Smith " to "John Smith" {type father}


}}

{{#wgraph: svg | thumb = 80 | 
  {{Wgraph:Genealogy Graph}}
  {{Wgraph:Genealogy Person
   | John Smith  
   | male
   | born = 21.06.1952
   | info = that & this
   | married to = Bella Smith
   | marriage=01.03.1985
  }}
  {{Wgraph:Genealogy Person| Bella Smith     |female|born=03.04.1955|info=this and that}}
  {{Wgraph:Genealogy Person| Dave Smith      |male  |born=30.05.1986|father=John Smith|mother=Bella Smith}}
  {{Wgraph:Genealogy Person| Paul Smith      |male  |born=28.02.1988|father=John Smith|mother=Bella Smith}}
  {{Wgraph:Genealogy Person| Susan Smith     |female|born=04.06.1995|father=Gero Scholz|mother=Rosa Scholz}}
}}
continue with  Wgraph:Sample Genealogy 4 ..
back to        Wgraph:Sample Genealogy 2 ..