chiark / gitweb /
graph faffing, now knows who's king
authornaath <naath@chiark.greenend.org.uk>
Sun, 13 Apr 2014 18:18:47 +0000 (19:18 +0100)
committernaath <naath@chiark.greenend.org.uk>
Sun, 13 Apr 2014 18:18:47 +0000 (19:18 +0100)
cgiFiles/bigGraph.py
cgiFiles/jointAncestorGraph.py
cgiFiles/make_dot.py
familyTree/askQuestion.py
familyTree/notes

index c98d2940306a0ae8930360839ebe6ff2fbe1c9f2..9ec77f97b1f1af207ce0ee6a446de4d55a55309c 100755 (executable)
@@ -4,7 +4,7 @@ import cgi
 import cgitb
 import sys
 sys.path.append('/home/naath/familyTreeProject/familyTree')
-import askQuestion
+import askQuestion as aQ
 import make_dot as d
 
 def add_quotes(s):
@@ -14,16 +14,16 @@ def add_quotes(s):
 cgitb.enable()
 
 form = cgi.FieldStorage()
-conn = askQuestion.connect()
+conn = aQ.connect()
 
-famTree = askQuestion.list_people_parents()
+famTree = aQ.list_people_parents()
 
 d.start_dot(8)
 for i in range(len(famTree)):
 #for i in range(100):
        self = famTree[i][0]
-       d.add_person(self)
 
+       d.add_person(self)
 
        ps = []
        for j in range(len(famTree[i][1])):
@@ -39,7 +39,6 @@ for i in range(len(famTree)):
                 s = famTree[i][2][j]
                 ps = (self,s)
 
-                d.add_person(s)
                 d.add_marriage(self,s,[],0)
                 d.add_subgraph(ps)
 
@@ -47,4 +46,4 @@ d.add_subgraphs()
 d.end_dot()
 d.render_dot()         
 
-askQuestion.close(conn)
+aQ.close(conn)
index 7fdadd0d7714bef20868461e8289c298bb18751f..c700ff01eae4833b1d86407cdd106b1dd40c6b84 100755 (executable)
@@ -8,30 +8,6 @@ sys.path.append('/home/naath/familyTreeProject/familyTree')
 import make_dot as d
 import askQuestion as aQ
 
-def add_parents(ID,name,startLevel,stopLevel):
-
-       startLevel = startLevel + 1
-       if int(startLevel) == int(stopLevel)+1:
-               return
-
-       pair=[]
-       [parents, parentIDs,parentNames] = aQ.find_parents(ID)
-
-        pair = []
-        for i in range(len(parents)):
-                newName = parents[i]
-                if parentIDs[i]!=0:
-                        newID = parentIDs[i]
-                        if not d.has_node(newName):
-                                d.add_person(newName)
-                                add_parents(newID,newName,\
-                               startLevel,stopLevel)
-                else:   
-                        d.add_person(newName)
-                pair.append(newName)
-
-       d.add_marriage(pair[0], pair[1],[name],1)
-
 def find_oneside_path(ID,start,stop):
        global myP
        global myC
@@ -110,17 +86,11 @@ def make_graph(ID,ID2,LA,LB):
         d.start_dot(8) 
        done = 0
 
-       find_path(ID,ID2,LA,LB)
+       for tID in [ID, ID2]:
+               [Self, selfID, selfName] = aQ.find_person(tID)
+               d.add_highlight(Self)
 
-#      if int(LA)!=0:
-#              [Self, selfID, selfName] = aQ.find_person(ID)
-#              d.add_highlight(Self)
-#              add_parents(selfID,Self,0,LA)
-#
-#      if int(LB)!=0:
-#              [Self, selfID, selfName] = aQ.find_person(ID2)
-#               d.add_highlight(Self)
-#              add_parents(selfID,Self,0,LB)
+       find_path(ID,ID2,LA,LB)
 
        d.add_subgraphs()
        d.end_dot()
index 8006a79b636b1d32f6f2ed73087a505f1f0316a0..abf3071dfd4d90829524e668e29bc53848c20e8d 100755 (executable)
@@ -4,6 +4,10 @@ import cgi
 import cgitb
 import gv
 import re
+import sys
+sys.path.append('/home/naath/familyTreeProject/familyTree')
+import askQuestion as aQ
+
 
 cgitb.enable()
 def add_quotes(s):
@@ -105,6 +109,7 @@ def add_subgraphs():
 
 def end_dot():
        global dot
+
         dot = dot + "}"
 
 def start_dot(fs):
@@ -117,16 +122,35 @@ def start_dot(fs):
        edges=[]
        cNodes={}
        dot = "digraph G{\n"
-       dot = dot + "ranksep = 0.5 nodesep = 0\n"
+       dot = dot + "ranksep = 0.2 nodesep = 0\n"
        subgraphs=[]
        set_attr(fs)
 
 def add_highlight(name):
-       add_node(name,highlight_attr)
+       global dot
 
-def add_person(name):
-       add_node(name,person_attr)
+       add_person(name)
+       dot = dot +'\n'\
+       'subgraph clusterhl {'+add_quotes(name)+';\n'
+       for a in highlight_attr:
+               dot = dot + a[0] + '=' +a[1] +';\n'
+       dot = dot + '}'
+       
 
+def add_person(name):
+       try:
+               k=aQ.isKing(name)
+       except:
+               k=0
+       ln = name.replace(', ','\\n')
+       ln = ln.replace(',','\\n')
+       ln = ln.replace(' ','\\n')
+       myLabel = '"'+str(ln)+'"'
+
+       if k==1:
+                add_node(name,king_attr+[('label',myLabel)])
+       else:
+               add_node(name,person_attr+[('label',myLabel)])
 def add_spot(name):
        add_node(name,spot_attr)
 
@@ -134,6 +158,7 @@ def add_spot(name):
 def set_attr(fs):
        global person_attr
         global highlight_attr
+       global king_attr
         global spot_attr
         global edge_attr
         global invis_attr
@@ -143,9 +168,14 @@ def set_attr(fs):
        global debug_attr
        global debug_edge_attr
        zero_size = [('width','0'),('height','0')]
-        person_attr = [('fontsize',str(fs)),('shape','plaintext')] + zero_size
-       highlight_attr = person_attr + \
-               [('fontcolor','red'),('shape','box'),('color','red')]
+        person_attr = [('fontsize',str(fs))]+\
+               [('shape','plaintext'),('margin','0.1'),\
+               ('style','filled'),('fillcolor','white')] +\
+               zero_size
+       highlight_attr =  \
+               [('shape','box'),('color','red'),('style','filled')]
+       king_attr = person_attr +\
+               [('fontcolor','purple4'),('shape','house'),('color','purple4')]
        debug_attr = person_attr + [('fontcolor','green')]
        spot_attr = [('shape','point')] + zero_size
        edge_attr = [('len','0'),('arrowsize','0.5')]
@@ -167,6 +197,11 @@ def attr_string(attr):
        return attr_str
 
 def render_dot():
+
+       f = open('tempfile','w')
+       f.write(dot)
+       f.close
+
        gvv = gv.readstring(dot)
         gv.layout(gvv,'dot')
 
index ecf810aa2e37199d06ac7e9c69be8f4741aefdc7..a5a6b3082b756875be7ef7ff4aeec282545c6c27 100755 (executable)
@@ -4,6 +4,7 @@ import sqlite3
 import findYear
 from string import Template
 import cgi
+import re
 
 global link_Template 
 link_Template= Template(\
@@ -735,6 +736,19 @@ def find_person(ID):
                selfName = row[1]
                selfID = row[2]
                 return [Self, selfID,selfName]
+def isKing(ID):
+       ID = int(ID.split(',')[-1])
+       s=  "SELECT style FROM styles WHERE ID=?"
+       t = (ID,)       
+
+       k = 0
+       for row in run_query(s,t):
+               a=re.match('.*King',row[0])
+               b=re.match('.*Queen',row[0])
+               if a!=None or b!=None:
+                       k=1
+
+       return k
 
 def find_parents(ID):
         s = "SELECT name, parentID"\
@@ -753,7 +767,7 @@ def find_parents(ID):
                         pID = row[1]
                        pN = row[0]
                 else:
-                        p = row[1] + ',p ' + str(ID)
+                        p = row[1] + ',p' + str(ID)
                         pID = 0
                        pN = row[1]
                 parents.append(p)
@@ -786,7 +800,7 @@ def find_spouses(ID):
                                 sID = row[1]
                                        sN = row[0]
                        elif row[1] !='':
-                                s=row[1] + ",s " +str(ID)
+                                s=row[1] + ",s" +str(ID)
                                 sID = 0
                                sN = row[1]
                         if row[1] !='':
@@ -828,7 +842,7 @@ def find_children(ID):
                         opID = row[2]
                        opN = row[3]
                 else:
-                        op = row[2] + ',s ' + str(ID)
+                        op = row[2] + ',s' + str(ID)
                         opID = 0
                        opN = row[2]
 
index 553a123b83b6efcb31bad9a70019279d763647c7..37f583b0b01b661593db1b1be3fda674fe980179 100644 (file)
@@ -15,5 +15,8 @@ see especially Edith of Mercia
 
 Sigehelm (163) was NOT MARRIED TO Prince Edward (162)
 
+
 Check cousin marriages against:
 http://en.wikipedia.org/wiki/List_of_coupled_cousins#Royalty
+
+Fulk DID NOT marry Henry IV!