Should be final ommit for classes EventListPage and EventPage, but do not hold your breath. Stylesheet updated to match work.

svn: r13185
This commit is contained in:
Rob G. Healey 2009-09-10 06:15:53 +00:00
parent a052bc3c63
commit b73ad55161
2 changed files with 497 additions and 491 deletions

View File

@ -137,7 +137,7 @@ h4 {
margin-top: .3cm;
padding:.2em 0 .2em 20px;
background-color: #453619;
border-bottom:solid 2px #5D835F;
border-bottom:solid 4px #5D835F;
}
h5, h6 {
font:normal 1em/1.2em serif;
@ -617,10 +617,6 @@ div#EventList, div#EventDetail { }
div#events table.eventlist {
margin-top: .3cm;
}
table.eventlist a:hover {
padding: 2px 0 2px 0;
display: block;
}
table.eventlist thead tr th {
font-weight: bold;
text-transform: uppercase;
@ -634,14 +630,15 @@ table.eventlist tbody tr td {
}
table.eventlist tbody tr td.ColumnType {
background-color: #FFF;
width: 16%;
border-top: solid 1px #5D835F;
width: 20%;
}
table.eventlist tbody tr td.ColumnDate {
width: 12%;
width: 9%;
}
table.eventlist tbody tr td.ColumnPlace {
background-color: #FFF;
width: 35%;
width: 40%;
}
table.eventlist tbody tr td.ColumnSources {
background-color: #FFF;
@ -653,14 +650,29 @@ table.eventlist tbody tr td.ColumnNotes {
}
table.eventlist tbody tr td.ColumnPerson {
background-color: #FFF;
width: 35%;
width: 25%;
}
table.eventlist tbody tr td.ColumnPartner {
background-color: #FFF;
width: 35%;
}
div#EventDetail h3 {
font-size: 40px;
font-size: xxx-large;
}
div#EventDetail h3:first-lettr {
color: #5D835F;
}
div#EventDetail table.eventlist {
margin: .5cm 0 .3cm 1.5cm;
width: 800px;
}
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
font-weight: bold;
text-transform: uppercase;
width: 20%;
}
div#EventDetail table.eventlist tbody tr td.ColumnType {
background-color: #D8F3D6;
}
/* Gallery
@ -965,29 +977,30 @@ table.infolist tbody tr td.ColumnValue p {
----------------------------------------------------- */
div#attributes { }
div#attributes table.attrlist {
table.attrlist {
width: 100%;
}
div#attributes table.attrlist thead tr th {
table.attrlist thead tr th {
font-weight: bold;
text-transform: uppercase;
}
div#attributes table.attrlist tbody tr td {
border-bottom: solid 1px #5D835F;
table.attrlist tbody tr {
border: solid 1px #5D835F;
}
table.attrlist tbody tr td {
background-color: #D8F3D6;
}
div#attributes table.attrlist tbody tr td.ColumnType {
table.attrlist tbody tr td.ColumnType {
width: 200px;
}
div#attributes table.attrlist tbody tr td.ColumnValue {
table.attrlist tbody tr td.ColumnValue {
width: 250px;
padding: 4px 0 4px 0;
}
div#attributes table.attrlist tbody tr td.ColumnSources {
table.attrlist tbody tr td.ColumnSources {
background-color: #FFF;
width: 100px;
}
div#attributes table.attrlist tbody tr td.ColumnNotes {
table.attrlist tbody tr td.ColumnNotes {
width: 400px;
}
@ -1012,9 +1025,8 @@ div#parents table.infolist tbody tr td.ColumnValue ol li {
div#families table.infolist {
margin: .3cm 0 .3cm 0;
}
div#Families table.infolist tbody tr td {
background-color: #D8F3D6;
}
div#Families table.infolist tbody tr td { }
div#families table.infolist tbody tr td.ColumnValue {
background-color: #FFF;
}

View File

@ -306,8 +306,7 @@ class BasePage(object):
value = value or " "
# determine if same row or not?
samerow = True if (value == " " or colclass == 'Type')\
else False
samerow = True if (value == " " or colclass == "Type") else False
trow += Html("td", value, class_ = "Column%s" % colclass,
inline = samerow)
@ -428,17 +427,12 @@ class BasePage(object):
# return unordered note list to its callers
return unordered
def display_event_row(self, evt, evt_ref, showplc, showdescr, showsrc, subdirs, hyp):
def display_event_row(self, evt, evt_ref, showplc, showdescr, showsrc,
shownote, subdirs, hyp):
"""
display the event row for class IndividualPage
@param: evt = event from database
@param: evt_ref = event reference
@param: showplc = show places or not?
@param: showdescr = show description or not?
@param: showsrc = show source references or not?
@param: subdirs = either True or False in this scenario
@param: hyp = show event type hyperlinked or not?
for more information: see get_event_data()
"""
db = self.report.database
@ -462,15 +456,17 @@ class BasePage(object):
trow = Html("tr")
# get event data
event_data = self.get_event_data(evt, evt_ref, showplc, showdescr,
showsrc, subdirs, hyp)
"""
for more information: see get_event_data()
"""
event_data = self.get_event_data(evt, evt_ref, showplc, showdescr, showsrc,
shownote, subdirs, hyp)
for (label, colclass, data) in event_data:
data = data or " "
data = " " if (not data or []) else data
# determine if information will fit on same line?
samerow = True if (data == " " or (colclass == 'Type' or 'Date')) \
else False
samerow = True if (data == " " or colclass == "Date") else False
trow += Html("td", data, class_ = "Column%s" % colclass, inline = samerow)
@ -491,8 +487,8 @@ class BasePage(object):
# return event hyper link to its callers
return evt_hyper
def get_event_data(self, evt, evt_ref, showplc, showdescr, showsrc, subdirs,
hyper, gid=None):
def get_event_data(self, evt, evt_ref, showplc, showdescr, showsrc, shownote,
subdirs, hyper, gid=None):
"""
retrieve event data from event and evt_ref
@ -501,6 +497,7 @@ class BasePage(object):
@param: showplc = show the event place or not?
@param: showdescr = to show the event description or not?
@param: showsrc = to show the event source references or not?
@param: shownote = show notes or not?
@param: subdirs = either True or False
@param: hyper = to hyperlink the event type or not?
"""
@ -525,39 +522,32 @@ class BasePage(object):
place_hyper = self.place_link(place_handle, place_name,
place.gramps_id, subdirs)
# get event and event_ref notes
notelist = evt.get_note_list()
notelist.extend(evt_ref.get_note_list() )
# wrap it all up and return to its callers
# position 0 = translatable label, position 1 = column class
# position 2 = data
info = [
[THEAD, 'Type', evt_hyper],
[DHEAD, 'Date', _dd.display(evt.get_date_object() )],
[NHEAD, 'Notes', notelist] ]
[DHEAD, 'Date', _dd.display(evt.get_date_object() )] ]
if showplc:
place_row = [PHEAD, 'Place', place_hyper]
info.insert(2, place_row)
info.append(place_row)
if showdescr:
descr = evt.get_description()
if descr:
position = 2
if showplc:
position = 3
descr_row = [DESCRHEAD, 'Description', descr]
info.insert(position, descr_row)
info.append(descr_row)
if showsrc:
srcrefs = evt.get_source_references()
if srcrefs:
position = 3
if showdescr:
position = 4
source_row = [SHEAD, 'Sources', srcrefs]
info.insert(position, source_row)
info.append(source_row)
if shownote:
notelist = evt.get_note_list()
notelist.extend(evt_ref.get_note_list() )
note_row = [NHEAD, 'Notes', notelist]
info.append(note_row)
# return event data information to its callers
return info
@ -1331,14 +1321,22 @@ class BasePage(object):
# return references division to its caller
return section
def person_link(self, url, person, name_style, gid=None, thumbnailUrl=None):
def person_link(self, url, person, name_style, first=True, gid=None,
thumbnailUrl=None):
"""
creates a hyperlink for a person
namestyle = False -- first and suffix only
@param: person = person in database
@param: namestyle = False -- first and suffix only
= True -- name displayed in name_format variable
= None -- person is name
@param: first = show person's name and gramps id if requested and available
"""
# the only place that this will ever equal False
# is first there is more than one event for a person for class EventListPage
if first:
# see above for explanation
if name_style:
person_name = self.get_name(person)
@ -1363,7 +1361,10 @@ class BasePage(object):
# 3. insert gramps id if requested and available
if not self.noid and gid:
hyper += Html('span', '[%s]' % gid, class_="grampsid", inline = True)
hyper += Html('span', " [%s]" % gid, class_ = "grampsid", inline = True)
else:
hyper = " "
# return hyperlink to its caller
return hyper
@ -2016,11 +2017,12 @@ class EventListPage(BasePage):
body += eventlist
msg = _("This page contains an index of all the events in the "
"database, sorted by their type and person’s surname. "
"Clicking on an event’s type will take you to that "
"event’s page. Clicking on a place will take you to that "
"place’s page. Clicking on a person’s name will take "
"you to that person’s page.")
"database, sorted by their type, date (if one is present), "
"and person’s surname. Clicking on an event’s type "
"will take you to that event’s page. Clicking on a place "
"will take you to that place’s page. Clicking on a "
"person’s name will take you to that person’s page. "
"The person will only be shown once for their events.")
eventlist += Html('p', msg, id='description')
# begin event list table
@ -2054,8 +2056,8 @@ class EventListPage(BasePage):
partner) in event_list:
# write eent row data
trow = self.write_event_row(person, evt_type, evt,
evt_ref, partner, first)
trow = self.write_event_row(person, partner, evt_type, evt,
evt_ref, first)
tbody += trow
first = False
@ -2068,57 +2070,47 @@ class EventListPage(BasePage):
# and close the file
self.mywriter(eventslistpage, of)
def write_event_row(self, person, evt_type, evt, evt_ref, partner, first):
def write_event_row(self, person, partner, evt_type, evt, evt_ref, first):
"""
display the event row for class EventListPage()
@param: person = person that the event is referenced to
@param: partner = only used when the event is either a Marriage or Divorce
@param: evt_type = the type of event
@param: evt = event
@param: evt_ref = event reference
@param: partner = only used when the event is either a Marriage or Divorce
@param: first = used for only showing the person once for list of events
"""
subdirs = False
# get person's hyperlink
url = self.report.build_url_fname_html(person.handle, 'ppl', subdirs)
person_hyper = self.person_link(url, person, True, person.gramps_id)
# get event data
"""
@param: event = event object
@param: evt_ref = event reference
@param: showplc
@param: showdescr
@param: showsrc
@param: use subdirs or not?
@param: hyper = show event type hyperlinked or not?
@param: gid = event gramps_id
"""
event_data = self.get_event_data(evt, evt_ref, True, False, False,
subdirs, True, evt.gramps_id)
person_hyper = self.person_link(url, person, True, first, person.gramps_id)
# begin table row
trow = Html("tr")
# get event data
"""
for more information: see get_event_data()
"""
event_data = self.get_event_data(evt, evt_ref, True, False, False,
False, subdirs, True, evt.gramps_id)
for (label, colclass, data) in event_data:
data = data or " "
data = " " if (not data or []) else data
# determine if same row or not?
samerow = True if (data == " " or (colclass == 'Type' or 'Date')) \
else False
samerow = True if (data == " " or colclass == "Date") else False
trow += Html("td", data, class_ = "Column%s" % colclass, inline = samerow)
# display person hyperlink or " "
person_hyper = person_hyper or " "
# display person hyperlink
trow += Html("td", person_hyper, class_ = "ColumnPerson")
# get partner hyperlink
# display partner if event is either a Marriage or Divorce?
# partner will not be None
# get partner hyperlink
partner_hyper = " "
if partner is not None:
@ -2136,6 +2128,7 @@ class EventPage(BasePage):
BasePage.__init__(self, report, title, event.gramps_id)
self.up = True
db = report.database
subdirs = True
of = self.report.create_file(evt_ref.ref, 'evt')
eventpage, body = self.write_header(_('Events'))
@ -2159,28 +2152,27 @@ class EventPage(BasePage):
table += tbody
# get event data
shownote = True
"""
@param: event = event object
@param: evt_ref = event reference
@param: showplc
@param: showdescr
@param: showsrc
@param: use subdirs or not?
@param: hyper = show event type hyperlinked or not?
@param: gid = event gramps_id
for more information: see get_event_data()
"""
event_data = self.get_event_data(event, evt_ref, True, True,
False, True, False, event.gramps_id)
False, shownote, subdirs, False, event.gramps_id)
# the first four are listed here, the other two are way below
for index in xrange(4):
# the first ones are listed here, the rest are shown below
# minus one because it starts at zero instead of one
# minus one for note list which is shown below
for index in xrange(len(event_data) - 2):
label = event_data[index][0]
data = event_data[index][2] or None
colclass = event_data[index][1]
data = event_data[index][2] or " "
# determine if we are using the same row or not?
samerow = True if (data == " " or colclass == "Date") else False
if data is not None:
trow = Html("tr") + (
Html("td", label, class_ = "ColumnAttribute", inline = True),
Html("td", data, class_="ColumnValue")
Html('td', data, class_ = "Column%s" % colclass, inline = samerow)
)
tbody += trow
@ -2189,7 +2181,7 @@ class EventPage(BasePage):
person_hyper = self.person_link(url, person, True, person.gramps_id)
trow = Html("tr") + (
Html("td", _('Person'), class_ = "ColumnAttribute", inline = True),
Html("td", person_hyper, class_="ColumnValue")
Html("td", person_hyper, class_ = "ColumnPerson")
)
tbody += trow
@ -2199,22 +2191,20 @@ class EventPage(BasePage):
partner_hyper = self.person_link(url, partner, True, partner.gramps_id)
trow = Html("tr") + (
Html("td", _('Partner'), class_ = "ColumnAttribute", inline = True),
Html("td", partner_hyper, class_="ColumnValue")
Html("td", partner_hyper, class_ = "ColumnPartner")
)
tbody += trow
# Narrative subsection
notelist = event_data[4][2]
if notelist:
if shownote:
notelist = event_data[(len(event_data) - 1)][2] or None
if notelist is not None:
eventdetail += self.display_note_list(notelist)
# get attribute list
attributes = event.get_attribute_list()
attributes.extend(evt_ref.get_attribute_list() )
if attributes:
attrlist = []
for attr in attributes:
attrlist.append(attr)
attrlist = event.get_attribute_list()
attrlist.extend(evt_ref.get_attribute_list() )
if attrlist:
eventdetail += self.display_attr_list(attrlist, False)
# add clearline for proper styling
@ -3807,7 +3797,14 @@ class IndividualPage(BasePage):
thead = Html("thead")
table += thead
thead += self.display_event_header(True, False, True)
"""
@param: show place
@param: show description
@param: show source references
@param: show note
"""
thead += self.display_event_header(True, False, True, False)
tbody = Html("tbody")
table += tbody
@ -3821,12 +3818,13 @@ class IndividualPage(BasePage):
@param: event_ref = event reference
@param: show place or not?
@param: show description or not?
@param: show sources or not?
@param: show source references or not?
@param: shownote = show notes or not?
@param: subdirs = True or False
@param: hyp = show hyperlinked evt type or not?
"""
tbody += self.display_event_row(event, evt_ref, True, False, True,
True, True)
False, True, True)
# return section to its caller
return section
@ -4319,44 +4317,37 @@ class IndividualPage(BasePage):
)
return ped
def display_event_header(self, showplc, showdescr, showsrc):
def display_event_header(self, showplc, showdescr, showsrc, shownote):
"""
will print the event header row for display_event_row() and
format_event()
"""
# get event data
"""
@param: showplc = show place
@param: showdescr = show description
@param: showsrc = show source references
@param: shownote = show notes or not?
"""
# wrap it all up and return to its callers
# position 0 = translatable label, position 1 = column class
# position 0 = translatable label, position 1 = column class, and
# position 2 = data
event_header_row = [
[THEAD, 'Type'],
[DHEAD, 'Date'],
[NHEAD, 'Notes'] ]
(THEAD, 'Type'),
(DHEAD, 'Date') ]
if showplc:
place_row = [PHEAD, 'Place']
event_header_row.insert(2, place_row)
place_row = (PHEAD, 'Place')
event_header_row.append(place_row)
if showdescr:
if showplc:
position = 3
else:
position = 2
descr_row = [DESCRHEAD, 'Description']
event_header_row.insert(position, descr_row)
descr_row = (DESCRHEAD, 'Description')
event_header_row.append(descr_row)
if showsrc:
position = 3
if showdescr:
position = 4
source_row = [SHEAD, 'Sources']
event_header_row.insert(position, source_row)
source_row = (SHEAD, 'Sources')
event_header_row.append(source_row)
if shownote:
note_row = (NHEAD, 'Notes')
event_header_row.append(note_row)
trow = Html("tr")
for (label, colclass) in event_header_row:
@ -4374,16 +4365,18 @@ class IndividualPage(BasePage):
table += thead
# attach event header row
thead += self.display_event_header(True, False, True)
"""
@param: show place
@param: show description
@param: show source references
@param: show note
"""
thead += self.display_event_header(True, False, True, False)
# begin table body
tbody = Html("tbody")
table += tbody
# ordered list
ordered = Html('ol')
tbody += ordered
for event_ref in eventlist:
event = db.get_event_from_handle(event_ref.ref)
@ -4393,18 +4386,13 @@ class IndividualPage(BasePage):
@param: event_ref = event reference
@param: show place or not?
@param: show description or not?
@param: show sources or not?
@param: show source references or not?
@param: shownote = show notes or not?
@param: subdirs = True or False
@param: hyp = show hyperlinked evt type or not?
"""
ordered += self.display_event_row(event, event_ref, True, False,
True, True, True)
# attributes list
attrlist = event.get_attribute_list()
attrlist.extend(event_ref.get_attribute_list() )
if attrlist:
ordered += self.dump_attributes(attrlist, True)
tbody += self.display_event_row(event, event_ref, True, False,
True, False, True, True)
# return table to its callers
return table
@ -4822,7 +4810,12 @@ class NavWebReport(Report):
self.copy_file(from_path, f, "images")
def build_events(self, ind_list, event_dict):
""" build a list of events for classes EventListPage and EventPage """
"""
build a list of events for classes EventListPage and EventPage
@param: ind_list = list of handles for persons in this database
@param: event_dict = a list of events from ind_list
"""
db = self.database
for person_handle in ind_list:
@ -4840,7 +4833,7 @@ class NavWebReport(Report):
for family_handle in person.get_family_handle_list():
family = db.get_family_from_handle(family_handle)
# get partner handle
# get partner for use in Marriage and Divorce
partner_handle = ReportUtils.find_spouse(person, family)
if partner_handle:
partner = db.get_person_from_handle(partner_handle)
@ -4851,7 +4844,8 @@ class NavWebReport(Report):
# get event type
evt_type = get_event_type(event, evt_ref)
# get sot date as year/month/day or 0000/00/00
# get sot date as year/month/day, 2009/09/09,
# or 0000/00/00 for non-existing date
event_date = event.get_date_object()
year = event_date.get_year() or 0
month = event_date.get_month() or 0
@ -4869,7 +4863,7 @@ class NavWebReport(Report):
# get event type
evt_type = get_event_type(event, evt_ref)
# get sot date as year/month/day or 0000/00/00
# get sot date as year/month/day, see above for further info
event_date = event.get_date_object()
year = event_date.get_year() or 0
month = event_date.get_month() or 0