Improved links and configuration file for dot

Restructured data to support block and node level links.
Added hidden nodes and edges in blocks to improve link
visualization.

Introduced support for configuring dot file parameters with
a config file.
This commit is contained in:
Lauri Koskenniemi 2025-05-30 22:54:36 +03:00
parent 76c4dfb528
commit 93e2554457
8 changed files with 3384 additions and 2451 deletions

View File

@ -1,7 +1,7 @@
import json
import yaml
def load_yaml(filename):
def load_data(filename):
# Check file extension
if not filename.lower().endswith(('.yaml', '.yml')):
raise ValueError(f"File '{filename}' is not a YAML file")
@ -19,8 +19,29 @@ def load_yaml(filename):
except yaml.YAMLError as e:
raise ValueError(f"Invalid YAML format in file '{filename}': {str(e)}")
def load_config(filename):
# Check file extension
if not filename.lower().endswith(('.yaml', '.yml')):
raise ValueError(f"File '{filename}' is not a YAML file")
# Read file content
try:
with open(filename, 'r') as f:
content = f.read()
except FileNotFoundError:
return {}
# Try to load as YAML
try:
config = yaml.safe_load(content)
if not isinstance(config, dict):
raise ValueError("YAML content does not contain a dictionary")
return config
except yaml.YAMLError as e:
raise ValueError(f"Invalid YAML format in file '{filename}': {str(e)}")
#def main():
# data = load_yaml(DATA)
# data = load_data(DATA)
# json_data = json.dumps(data, indent=2)
# print(json_data)

View File

@ -2,110 +2,141 @@
import os
import uuid
HEADER = """
graph {
graph [splines=ortho, nodesep=1]
node [color=white]
edge [headport=n, tailport=s]
compound=true
"""
FOOTER = """
}
"""
# TODO:
# Add hidden nodes in each cluster above visible nodes connected by hidden edges and attach visible edges to them
# - also see: https://stackoverflow.com/questions/53862417/how-to-set-head-and-tail-position-in-nodes-graphviz
# Solve layering of clusters
# - https://observablehq.com/@gordonsmith/church
def make_header(config):
return "graph {\n" + config["graph"] + "\n"
def make_footer():
return "}\n"
def make_node_line(node, config):
line = f"{node['id']} [label=\"{node['text']}\"\n"
if node['hidden']:
line += config["node"]["hidden"]
else:
line += config["node"]["text"]
return line + "]\n"
def make_link_line(link, config):
configs = []
if link['head'] != "":
configs.append(f"lhead=cluster_{link['head']}")
if link['hidden']:
configs.append(config["edge"]["hidden"])
else:
configs.append(config["edge"]["default"])
line = f"{link['from']} -- {link['to']}"
if len(configs) > 0:
line += " [" + ", ".join(configs) + "]"
return line + "\n"
def make_block_line(block, config):
line = f"subgraph cluster_{block['id']} {{\n{config["subgraph"]}\nlabel=\"{block['label']}\"\n"
for node in block["texts"]:
line += f"{node}\n"
return line + "}\n\n"
def add_nodes(nodes, config):
line = ""
for node in nodes:
line += make_node_line(node, config)
return line
def add_links(links, config):
line = ""
for link in links:
line += make_link_line(link, config)
return line
def add_blocks(blocks, config):
line = ""
for block in blocks:
line += make_block_line(block, config)
return line
def get_id():
return "id" + str(uuid.uuid4().hex)
class Graph:
def __init__(self):
self.config = {}
self.layers = {}
self.blocks = {}
self.blocks = []
self.nodes = []
self.links = {}
self.links = []
self.dot_file = ""
def __str__(self):
return self.dot_file
def get_id(self):
return "id" + str(uuid.uuid4().hex)
def set_config(self, config):
dot = config.get("dot", {})
if dot != {}:
dot["graph"] = dot.get("graph", "")
dot["subgraph"] = dot.get("subgraph", "")
dot["node"] = dot.get("node", {})
dot["node"]["text"] = dot["node"].get("text", "")
dot["node"]["hidden"] = dot["node"].get("hidden", "")
dot["edge"] = dot.get("edge", {})
dot["edge"]["default"] = dot["edge"].get("default", "")
dot["edge"]["hidden"] = dot["edge"].get("hidden", "")
self.config = dot
def process_blocks(self, data):
blocks = data.get('blocks', [])
linker = {}
for block in blocks:
block_id = self.get_id()
block_id = get_id()
new_block = {
"id": block_id,
"label": block.get("label", ""),
#"layer": block.get("layer", 0),
"texts": []
}
hidden_node_id = get_id()
self.nodes.append({"id": hidden_node_id, "text": "", "hidden": True})
new_block["texts"].append(hidden_node_id)
#layer = block.get("layer", 0)
#if layer not in self.layers:
# self.layers[layer] = []
links = block.get("links", [])
for link in links:
if link in linker:
self.links.append({"from": linker[link], "to": hidden_node_id, "head": block_id, "hidden": False})
del linker[link]
for text in block.get("texts", []):
node_id = self.get_id()
self.nodes.append({"id": node_id, "text": text.get("text", "")})
node_id = get_id()
self.nodes.append({"id": node_id, "text": text.get("text", ""), "hidden": False})
self.links.append({"from": hidden_node_id, "to": node_id, "head": "", "hidden": True})
new_block["texts"].append(node_id)
#self.layers[layer].append(node_id)
links = text.get("links", {})
if links != {}:
from_links = links.get("from", [])
to_links = links.get("to", [])
for from_link in from_links:
self.links[from_link] = {"from": node_id, "to": "", "head": ""}
for to_link in to_links:
if to_link in self.links:
self.links[to_link]["to"] = node_id
self.links[to_link]["head"] = block_id
links = text.get("links", [])
for link in links:
linker[link] = node_id
self.blocks[block_id] = new_block
self.blocks.append(new_block)
def build_dot(self):
self.dot_file = HEADER
for node in self.nodes:
self.dot_file += f"{node['id']} [label=\"{node['text']}\"]\n"
self.dot_file += "\n"
for block_id, block in self.blocks.items():
self.dot_file += f"subgraph cluster_{block_id} {{\n"
self.dot_file += f"label=\"{block['label']}\"\n"
self.dot_file += f"labeljust=l\n"
for node in block["texts"]:
self.dot_file += f"{node}\n"
self.dot_file += "}\n\n"
#for layer in self.layers.keys():
# self.dot_file += f"layer{layer} [style=invis]\n"
#ranking = " -- ".join([f"layer{layer}" for layer in self.layers.keys()])
#self.dot_file += f"{ranking} [style=invis]\n"
for link in self.links:
if self.links[link]["to"] != "":
self.dot_file += f"{self.links[link]['from']} -- {self.links[link]['to']}"
if self.links[link]["head"] != "":
self.dot_file += f" [lhead=cluster_{self.links[link]['head']}]"
self.dot_file += "\n"
#for layer, nodes in self.layers.items():
# self.dot_file += "{rank=same; "
# self.dot_file += "layer{layer}; "
# for node in nodes:
# self.dot_file += f"{node}; "
# self.dot_file += "}\n"
self.dot_file += FOOTER
self.dot_file = make_header(self.config)
self.dot_file += add_nodes(self.nodes, self.config)
self.dot_file += add_blocks(self.blocks, self.config)
self.dot_file += add_links(self.links, self.config)
self.dot_file += make_footer()
def make_dot(self, format="svg", dot_file="dot.gv", svg_file="graph.svg"):
if self.dot_file != "":

View File

@ -1,20 +1,22 @@
from db import load_yaml
from db import load_data, load_config
from graph import Graph
import os
#DATA="../data/styrman-blocks.yml"
#DATA="../data/test.yml"
DATA_DIR="/data"
CONFIG_FILE="/config.yaml"
def main():
# Get all YAML files in the data directory
yaml_files = [f for f in os.listdir(DATA_DIR) if f.endswith(('.yaml', '.yml'))]
config = load_config(CONFIG_FILE)
for yaml_file in yaml_files:
print(f"Processing {yaml_file}...")
data = load_yaml(os.path.join(DATA_DIR, yaml_file))
data = load_data(os.path.join(DATA_DIR, yaml_file))
graph = Graph()
graph.set_config(config)
graph.process_blocks(data)
graph.build_dot()
# Use the base name of the YAML file (without extension) as the output name

23
config.yaml Normal file
View File

@ -0,0 +1,23 @@
dot:
graph: |
graph [splines=ortho, nodesep=0.2]
//node [color=white]
//edge [headport=n, tailport=s]
compound=true
center=true
subgraph: |
labeljust=l
node:
text: |
shape=plaintext
hidden: |
//style=invis
shape=point
width=0
height=0
edge:
default: |
headport=n
tailport=s
hidden: |
style=invis

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 158 KiB

View File

@ -13,8 +13,7 @@ blocks:
Elisabet Jaakontr
s.xx.xx.1728
k.17.05.1803 Elimäki
links:
from: [1]
links: [1]
- text: |
Eerik Matinpk Styrman
lienee ollut Matti Matinpojan nuorempi
@ -27,6 +26,7 @@ blocks:
v. 1749-1779
- layer: 2
label: 2 sukupolvi, Matti Matinpk lapset
links: [1]
texts:
- text: |
Elisabet Matintr
@ -40,9 +40,7 @@ blocks:
pso xx.xx.xxxx
Anna Matintr
s.xx.xx.1750
links:
to: [1]
from: [2]
links: [2]
- text: |
Kaarina Matintr
s.xx.xx.1754
@ -70,10 +68,10 @@ blocks:
Takalan talon isäntä, joina hänen jälkeensä
Juho Jaakonpk, Mauno Junonpk, Paavo Maunonpk,
ja Olli Paavonpk Takala
links:
from: [3]
links: [3]
- layer: 3
label: 3 sukupolvi, Kustaa Matinpk lapset
links: [2]
texts:
- text: |
Eerik Kustaanpk
@ -84,9 +82,7 @@ blocks:
Britha Abrahamintr
s.xx.xx.1798
k.03.03.1874
links:
to: [2]
from: [4]
links: [4]
- text: |
Antti Kustaanpk
Mikkola
@ -101,8 +97,7 @@ blocks:
Maria Antintr
s.xx.xx.1797
k.xx.xx.xxxx
links:
from: [5]
links: [5]
- text: |
Anna Stina Kustaantr
Mikkola
@ -110,6 +105,7 @@ blocks:
k.xx.xx.xxxx
- layer: 3
label: 3. sukupolvi, Matti Matinpk lapset
links: [3]
texts:
- text: |
(Johan) Fredrik Matinpk
@ -122,9 +118,7 @@ blocks:
Haapalan Sutelasta
s.12.05.1807
k.25.04.1875
links:
to: [3]
from: [6]
links: [6]
- text: |
Anton Matinpk
Mikkola
@ -139,14 +133,13 @@ blocks:
Rantala
- layer: 4
label: 4. sukupolvi, Eerik Kustaanpk lapset
links: [4]
texts:
- text: |
Eerik Eerikinpk
Mikkola
s.06.12.1826
k.17.11.1904
links:
to: [4]
- text: |
Matti Eerikinpk
Mikkola
@ -156,8 +149,7 @@ blocks:
Eeva Eerikintr
s.08.10.1833
k.17.10.1923
links:
from: [7]
links: [7]
- text: |
Juho Eerikinpk
Mikkola
@ -165,6 +157,7 @@ blocks:
k.xx.xx.xxxx
- layer: 4
label: 4. sukupolvi, Kustaa Kustaanpk lapsi
links: [5]
texts:
- text: |
Jaakko Kustaanpk
@ -175,11 +168,10 @@ blocks:
Anna-Liisa Matintr
s.29.03.1832
k.xx.xx.xxxx
links:
to: [5]
from: [8]
links: [8]
- layer: 4
label: 4. sukupolvi, (Johan) Fredrik Matinpk lapset
links: [6]
texts:
- text: |
Juho Fredrikinpk
@ -193,9 +185,7 @@ blocks:
Maria Jeremiaantr
s.10.11.1833 Iitti
k.01.05.1917 Elimäki, Ratula
links:
to: [6]
from: [9]
links: [9]
- text: |
Matti Fredrinpk
Mikkola
@ -212,8 +202,7 @@ blocks:
s.26.01.183x Iitti
asui vielä v.1923 leskenä
Penttilässä
links:
from: [10]
links: [10]
- text: |
Elisabet Fredrikintr
Mikkola
@ -224,8 +213,7 @@ blocks:
Kalkela
s. xx.xx.1822 Elimäki
k.08.12.1904 Elimäki
links:
from: [11]
links: [11]
- text: |
Maria (Kri)stiina Fredrikintr
Mikkola
@ -245,6 +233,7 @@ blocks:
ja heille jälkeläisiä
- layer: 5
label: 5. sukupolvi, Matti Eerikinpk Mikkolan lapset
links: [7]
texts:
- text: |
Matti Matinpk
@ -259,9 +248,7 @@ blocks:
Matti Matinpk lienee
omistanut Penttilän
tilan n:o 5 v.1909-1919
links:
to: [7]
from: [12]
links: [12]
- text: |
Maria Matintr
Mikkola
@ -283,18 +270,16 @@ blocks:
Aino Elin Topiaantr Koho
s.13.07.1900
k.09.11.1963 Elimäki
links:
from: [13]
links: [13]
- layer: 5
label: 5. sukupolvi, Jaakko Kustaanpk Mikkolan Lapset
links: [8]
texts:
- text: |
Matti Jaakonpk
Mikkola
s.22.9.1855
k.xx.xx.xxxx
links:
to: [8]
- text: |
Eeva Liisa Jaakontr
Mikkola
@ -302,13 +287,12 @@ blocks:
k.xx.xx.xxxx
- layer: 5
label: 5. sukupolvi, Juho Fredrikinpk Styrman lapset
links: [9]
texts:
- text: |
Juho Juhonpk Styrman
s.26.2.1854
k.15.3.1854
links:
to: [9]
- text: |
Elisabet Juhontr
Styrman
@ -320,8 +304,7 @@ blocks:
Taavila
s.25.08.1841 Iitti
k.12.02.1908 Iitti
links:
from: [14]
links: [14]
- text: |
Matti Styrman
s.22.1.1858
@ -337,8 +320,7 @@ blocks:
Engblomille. 1880-luvulla
oli jo isäntänä Matti Juhonpk
”Styrman/Höysti”
links:
from: [15]
links: [15]
- text: |
Maria Styrman
s.6.9.1864 Elimäki
@ -360,8 +342,7 @@ blocks:
(Muckis, Mukkila)
s.18.03.1875 Ruotsinpyhtää
k.17.01.1947 Ruotsinpyhtää
links:
from: [16]
links: [16]
- text: |
Mauno (Mangnus) Styrman
s.28.02.1872 Elimäki
@ -372,8 +353,7 @@ blocks:
pso 23.09.1987
Anna Matintr Kohola
s.18.08.1877 Elimäki
links:
from: [17]
links: [17]
- text: |
Juho Styrman
muutti nimen v.1906
@ -384,17 +364,15 @@ blocks:
Wilhelmiina Koskenniemi
s.15.03.1883 Elimäki
k.16.04.1960 Kouvola
links:
from: [18]
links: [18]
- layer: 5
label: 5. sukupolvi, Matti Fredrikinpk Mikkolan lapset
links: [10]
texts:
- text: |
Anna Matintr
s.30.04.1861
k.03.09.1907
links:
to: [10]
- text: |
Juho Matinpk
s.22.12.1869
@ -413,6 +391,7 @@ blocks:
k.13.10.1899
- layer: 5
label: 5. sukupolvi, Elisabet Mikkolan lapset
links: [11]
texts:
- text: |
Juho Pietarinpk
@ -423,9 +402,7 @@ blocks:
Elisabeth Tuomaantr
s.05.08.1854 Iitti
k.18.07.1933 Elimäki
links:
to: [11]
from: [19]
links: [19]
- text: |
Anna Pietarintr
Kalkela
@ -438,6 +415,7 @@ blocks:
k.xx.xx.xxxx
- layer: 6
label: 6. sukupolvi, Matti Matinpk Mikkolan lapsi
links: [12]
texts:
- text: |
Eino Valmari
@ -447,19 +425,16 @@ blocks:
pso xx.xx.xxxx
Elma Eerikintr Tura
s.30.12.1914
links:
to: [12]
from: [35]
links: [35]
- layer: 6
label: 6. sukupolvi, Mauno (Magnus) Matinpk Mikkolan lapset
links: [13]
texts:
- text: |
Hellä Eeva Linnea
Mikkola
s.13.07.1923
k.05.04.1923 Elimäki
links:
to: [13]
- text: |
Oiva Mauno Johannes
Mikkola
@ -479,8 +454,7 @@ blocks:
Eira Anna-Liisa Rajala
s.12.04.1934
k.xx.xx.xxxx
links:
from: [34]
links: [34]
- text: |
Eliisa Anneli
Mikkola
@ -492,6 +466,7 @@ blocks:
k.xx.xx.xxxx
- layer: 6
label: 6. sukupolvi, Elisabeth Juhontr Styrmanin lapsi
links: [14]
texts:
- text: |
Iida Taavila
@ -502,11 +477,10 @@ blocks:
Sääksjärveltä
s.15.01.1867 Iitti
k.29.02.1928 Iitti
links:
to: [14]
from: [33]
links: [33]
- layer: 6
label: 6. sukupolvi, Matti Styrman lapset
links: [15]
texts:
- text: |
Anton Styrman
@ -521,9 +495,7 @@ blocks:
k.09.02.1957 Kotka
muutivat Ratulasta
Kotkaan 23.12.1907
links:
to: [15]
from: [32]
links: [32]
- text: |
Eemil Alfred Styrman
myöh. Höysti
@ -535,8 +507,7 @@ blocks:
myöh.Höysti
s.11.10.1885
k.22.08.1973
links:
from: [31]
links: [31]
- text: |
Alma Ingeborg
Styrman
@ -552,8 +523,7 @@ blocks:
s.16.04.1897
k.xx.xx.xxxx
Riihimäelle 19.01.1931
links:
from: [30]
links: [30]
- text: |
Martti Aleksanteri
Höysti
@ -563,10 +533,10 @@ blocks:
Laura Maria Laine
s.26.04.1908 Vanaja
k.26.01.1988
links:
from: [29]
links: [29]
- layer: 6
label: 6. sukupolvi, Anna Styrman lapset
links: [16]
texts:
- text: |
Hilma Irene
@ -574,8 +544,6 @@ blocks:
s.05.04.1894 Ruotsinpyhtää
k.07.08.1984 Ruotsinpyhtää
naimaton, lapseton
links:
to: [16]
- text: |
Jenny Emilia
Katajala
@ -593,18 +561,16 @@ blocks:
Kaarlo Mauritz Kivinen
s.22.09.1904 Iitti
k.22.05.1928 Iitti
links:
from: [28]
links: [28]
- layer: 6
label: 6. sukupolvi, Mauno (Magnus) Styrman lapset
links: [17]
texts:
- text: |
Alma Emilia
Styrman
s.19.08.1898
k.18.02.1915
links:
to: [17]
- text: |
Aarne Ilmari
Styrman
@ -617,8 +583,7 @@ blocks:
Mäkelä
s.29.12.1908 Vehkalahti
k.23.6.2003 Kouvola
links:
from: [27]
links: [27]
- text: |
Lauri Hilmeri
Styrman
@ -635,8 +600,7 @@ blocks:
Anna Lyyti Antintr Inki
s.04.12.1907 Taipalsaari
k.08.10.1963 Elimäki
links:
from: [26]
links: [26]
- text: |
Emil Edvard
Styrman
@ -646,8 +610,7 @@ blocks:
Iida Sofia Virta
s.12.09.1917 Sysmä
k.xx.xx.xxxx
links:
from: [25]
links: [25]
- text: |
Eino Arvid
Styrman
@ -663,8 +626,7 @@ blocks:
Koskenniemi
s.24.01.1894 Elimäki
k.13.11.1978 Kotka
links:
from: [24]
links: [24]
- text: |
Lempi Raakel
Styrman
@ -673,8 +635,7 @@ blocks:
pso 30.06.1935
Aarne Olavi Tuomala
ero xx.xx.xxxx
links:
from: [23]
links: [23]
- text: |
Tauno Jalmari
Styrman
@ -688,10 +649,10 @@ blocks:
Arvi Jokinen
15.08.1914 Elimäki
k.26.12.1985 Elimäki
links:
from: [22]
links: [22]
- layer: 6
label: 6. sukupolvi, Juho Styrman lapset
links: [18]
texts:
- text: |
Maire Anna-Liisa
@ -699,8 +660,6 @@ blocks:
s.01.07.1915
k.xx.xx.xxxx
asunut v1993
links:
to: [18]
- text: |
Eeva Annikki
Koskivaara
@ -711,10 +670,10 @@ blocks:
Petäjä
s.02.02.1915 Sippola
k.22.04.1992 Kouvola
links:
from: [21]
links: [21]
- layer: 6
label: 6. sukupolvi, Juho Pietarinpk Kalkelan lapsi
links: [19]
texts:
- text: |
Tilda Juhontr
@ -732,18 +691,15 @@ blocks:
Niiranen
s.01.08.1873
k.23.10.1950
links:
to: [19]
from: [20]
links: [20]
- layer: 7
label: 7. sukupolvi, Eino Valmari Mikkolan lapset
links: [35]
texts:
- text: |
Else Aira Annikki
Torvasti os.Mikkola
s.26.02.1934
links:
to: [35]
- text: |
Raija Marjatta
Mikkola
@ -766,13 +722,12 @@ blocks:
s.29.01.1950
- layer: 7
label: 7. sukupolvi, Unto Kalevi Mikkolan lapset
links: [34]
texts:
- text: |
Eija-Liisa Inkeri
Mikkola
s.12.07.1959 - Elimäki
links:
to: [34]
- text: |
Irma Eira Anneli
Mikkola
@ -792,6 +747,7 @@ blocks:
s.17.01.1961
- layer: 7
label: 7.sukupolvi, Ida Taavilan/Kalle Kivisen lapset
links: [33]
texts:
- text: |
Valde Rudolf
@ -805,9 +761,7 @@ blocks:
Aili Peltonen
s.18.03.1902
k.09.09.1971
links:
to: [33]
from: [35a] # 35 exists???
links: [35a] # 35 exists???
- text: |
Kaarlo Mauritz
Kivinen
@ -822,6 +776,7 @@ blocks:
täälle 28.02.1931
- layer: 7
label: 7.sukupolvi, Anton Styrman myöh Höysti lapsi
links: [32]
texts:
- text: |
Elsa Maria
@ -838,11 +793,10 @@ blocks:
k.19.02.1974 Kotka
tal.hoit. Kaupunginjohtaja,
Kaupunkineuvos
links:
to: [32]
from: [36]
links: [36]
- layer: 7
label: 7. sukupolvi, Hilja Maria Styrmanin tyttäret
links: [31]
texts:
- text: |
Elsa Aallotar Hiljantr
@ -855,9 +809,7 @@ blocks:
2 pso 20.2.1947
Esteri Hyvönen
s.07.05.1947 Pyhäjärvi
links:
to: [31]
from: [37]
links: [37]
- text: |
Maili Margareta
Höysti
@ -866,6 +818,7 @@ blocks:
kansak.opettaja
- layer: 7
label: 7. sukupolvi, Impi Irene Styrman/Höysti lapsi
links: [30]
texts:
- text: |
Veikko Valio
@ -878,11 +831,10 @@ blocks:
pso Merja Inkeri Simonsuuri
xx.xx.1961
s.xx.xx.xxxx
links:
to: [30]
from: [38]
links: [38]
- layer: 7
label: 7. sukupolvi, Martti ja Laura Höystin lapset
links: [29]
texts:
- text: |
Pekka Martti Uolevi
@ -893,9 +845,7 @@ blocks:
Raija Kyllikki Laaksonen
s.08.02.1935 Elimäki
k.
links:
to: [29]
from: [39]
links: [39]
- text: |
Sakari Aarre Antero
Höysti
@ -905,8 +855,7 @@ blocks:
Birgitta Anna Haddas
s.09.12.1944 Liljendal
k.
links:
from: [40]
links: [40]
- text: |
Markku Jukka Tapani
Höysti
@ -929,6 +878,7 @@ blocks:
k.
- layer: 7
label: 7. sukupolvi, Tyyne Adele Katajalan lapsi
links: [28]
texts:
- text: |
Tyyni Seija-Liisa
@ -939,19 +889,16 @@ blocks:
Kuningas
s.31.03.1927 Säkkijärvi
k.xx.xx.xxxx
links:
to: [28]
from: [41]
links: [41]
- layer: 7
label: 7. sukupolvi, Aarne Ilmari Styrmanin myöh. Varavan lapset
links: [27]
texts:
- text: |
Armi Anelma
Styrman
s.07.08.1929 Elimäki
k.07.08.1933 Elimäki
links:
to: [27]
- text: |
Anna-Liisa
Styrman
@ -963,8 +910,7 @@ blocks:
Timo-Simo Laherto
s. 27.11.1935 Helsinki
k. 03.03.2001 Kouvola
links:
from: [42]
links: [42]
- text: |
Seija Marjatta
Varava
@ -982,8 +928,7 @@ blocks:
3 pso Matti Juhani
Nykänen
s.03.08.1942 (ero)
links:
from: [43]
links: [43]
- text: |
Aila Sisko Irmeli
Varava
@ -993,18 +938,16 @@ blocks:
Juhani Pitkänen
s.21.07.1941 Kouvola
k.24.05.2022 Kouvola
links:
from: [44]
links: [44]
- layer: 7
label: 7. sukupolvi, Lauri Hilmeri Styrman, myöh. Penttilän lapset
links: [26]
texts:
- text: |
Lea Anneli
Penttilä
s.12.07.1933 Elimäki
k.xx.xx.xxxx
links:
to: [26]
- text: |
Jouko Lauri Kalevi
Penttilä
@ -1016,8 +959,7 @@ blocks:
Ampuja
s.23.06.1936 Vahviala
muutti 27.10.1960 Iittiin
links:
from: [45]
links: [45]
- text: |
Jorma Tauno
Penttilä
@ -1037,10 +979,10 @@ blocks:
s.26.06.1940 Kauhajoki
k.xx.xx.xxxx
(ero 04.06.1984)
links:
from: [46]
links: [46]
- layer: 7
label: 7 .sukupolvi, Emil Edvard Styrmanin lapset
links: [25]
texts:
- text: |
Seppo Eemil
@ -1051,9 +993,7 @@ blocks:
Ros-Mari Synnove
s.15.05.1940 Lapinjärvi
k.07.03.xxxxxxx
links:
to: [25]
from: [47]
links: [47]
- text: |
Satu Inkeri
Styrman
@ -1073,8 +1013,7 @@ blocks:
Heikki Niilo Koivo
s.18.09.1943 Vaasa
k.
links:
from: [48]
links: [48]
- text: |
Sisko Tellervo
Styrman
@ -1089,10 +1028,10 @@ blocks:
Esa Jukka Riitala
s.27.10.1946 Iitti
k.
links:
from: [49]
links: [49]
- layer: 7
label: 7. sukupolvi, Aino ja Lauri Koskenniemen Lapset
links: [24]
texts:
- text: |
Erkki Juhani
@ -1102,9 +1041,7 @@ blocks:
Pso 09.07.1955
Terttu Heikuksela
s.13.11.1930 Elimäki
links:
to: [24]
from: [50]
links: [50]
- text: |
Pentti Kullervo
Koskenniemi
@ -1113,8 +1050,7 @@ blocks:
pso 25.09.1960
Irma Marjatta Hohtela
s.17.10.1934 Sippola
links:
from: [51]
links: [51]
- text: |
Irma Elisa
Koskenniemi
@ -1122,6 +1058,7 @@ blocks:
k.
- layer: 7
label: 7. sukupolvi, Lempi Rakel Styrmanin lapset
links: [23]
texts:
- text: |
Heikki Olavi
@ -1131,9 +1068,7 @@ blocks:
Pso 25.08.1962
Ulla-Maija Oksanen
s.25.04.1939 Kymi
links:
to: [23]
from: [52]
links: [52]
- text: |
Rauno Sakari
Tuomala
@ -1142,18 +1077,16 @@ blocks:
pso 05.12.1969
Seija Sinikka
s.20.03.1950 Vanaja
links:
from: [53]
links: [53]
- layer: 7
label: 7. sukupolvi, Maire ja Arvi Jokisen lapset
links: [22]
texts:
- text: |
Matti Juhani
Jokinen
s.27.12.1938 Elimäki
k.29.04.1939 Elimäki
links:
to: [22]
- text: |
Antti Juhani
Jokinen
@ -1163,8 +1096,7 @@ blocks:
Leena Marjatta
Mälkiä
s.11.11.1949 -
links:
from: [54]
links: [54]
- text: |
Maija-Liisa
Jokinen
@ -1174,8 +1106,7 @@ blocks:
Esa Suntio
s.25.09.1969 -
ero 31.11.1984
links:
from: [55]
links: [55]
- text: |
Kaisa Tellervo
Jokinen
@ -1185,8 +1116,7 @@ blocks:
Rauno Koponen
s.22.01.1950 - Rovaniemi
k.19.10.2022
links:
from: [56]
links: [56]
- text: |
Mikko Samuli
Jokinen
@ -1196,8 +1126,7 @@ blocks:
Marjut Hannele
Vuorinen
s.19.03.1956 Elimäki
links:
from: [57]
links: [57]
- text: |
Jukka Sakari
Jokinen
@ -1208,8 +1137,7 @@ blocks:
Mäkelä
s.20.08.1958 Elimäki
k.
links:
from: [58]
links: [58]
- text: |
Eeva Kaarina
Jokinen
@ -1220,18 +1148,16 @@ blocks:
Virtanen
s.11.10.1948 Orimattila
k.15.1.2015
links:
from: [60]
links: [60]
- layer: 7
label: 7. sukupolvi, Eeva Annikki Koskivaaran lapset
links: [21]
texts:
- text: |
Heljä Marjaana
Petäjä
s.06.11.1954 Kouvola
k.
links:
to: [21]
- text: |
Pirkko Helena
Petäjä
@ -1239,6 +1165,7 @@ blocks:
k.
- layer: 7
label: 7. sukupolvi, Tilda Juhontr Kalkelan lapset
links: [20]
texts:
- text: |
Evald Volmari
@ -1252,9 +1179,7 @@ blocks:
k.15.11.1988
muuttivat v.1935
Sippolaan
links:
to: [20]
from: [61]
links: [61]
- text: |
Martta Pakkala
s.05.01.1904
@ -1264,8 +1189,7 @@ blocks:
Ari ent.Bly
s.26.11.1901
k.22.10.1977 Elimäki
links:
from: [62]
links: [62]
- text: |
Aili Elisabet
Pakkala
@ -1298,7 +1222,6 @@ blocks:
Koivisto
s.16.02.1906
k.17.03.1985 Elimäki
links:
from: [63]
links: [63]
- layer: 8
label: TODO...

View File

@ -7,3 +7,4 @@ services:
image: puudot:latest
volumes:
- ./data:/data
- ./config.yaml:/config.yaml