Finished EventListPage. Now only need to work out the sorting protion of it... updated stylesheet to match.
svn: r13678
This commit is contained in:
parent
288a20f62d
commit
b90b6f769c
@ -647,11 +647,32 @@ div#EventList table.eventlist tbody tr.BeginName {
|
|||||||
div#EventList table.eventlist tbody tr td {
|
div#EventList table.eventlist tbody tr td {
|
||||||
padding: 4px 0px 4px 0px;
|
padding: 4px 0px 4px 0px;
|
||||||
}
|
}
|
||||||
div#EventList table.eventlist tbody tr td.ColumnEvent a,
|
div#EventList table.alphaevent {
|
||||||
div#EventList table.eventlist tbody tr td.ColumnPerson a,
|
padding: .3em 0 .3em 0;
|
||||||
div#EventList table.eventlist tbody tr td.ColumnPartner a {
|
margin: 0;
|
||||||
display: block;
|
}
|
||||||
padding: 4px 0px 4px 10px;
|
div#EventList table.alphaevent tbody tr.BeginEvent {
|
||||||
|
border-top: solid 1px #5D835F;
|
||||||
|
}
|
||||||
|
div#EventList table.alphaevent tbody tr td {
|
||||||
|
background-color: #D8F3D6;
|
||||||
|
border-bottom: dashed 1px #5D835F;
|
||||||
|
}
|
||||||
|
div#EventList table.alphaevent tbody tr td:hover {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
div#EventList table.alphaevent tbody tr td.ColumnType {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
div#EventList table.alphaevent tbody tr td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||||
|
background-color: #FFF;
|
||||||
|
width: 50%;
|
||||||
}
|
}
|
||||||
div#EventDetail h3 {
|
div#EventDetail h3 {
|
||||||
font-size: xxx-large;
|
font-size: xxx-large;
|
||||||
@ -939,36 +960,6 @@ div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks {
|
|||||||
width: 8%;
|
width: 8%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Gramps Event List by Alphabet
|
|
||||||
------------------------------------------------------ */
|
|
||||||
div#AlphabetEvent {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
div#AlphabetEvent table.alphaevent {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
div#AlphabetEvent table.alphaevent tbody tr.BeginEvent {
|
|
||||||
border-top: solid 1px #5D835F;
|
|
||||||
}
|
|
||||||
div#AlphabetEvent table.alphaevent tbody tr td {
|
|
||||||
background-color: #D8F3D6;
|
|
||||||
border-bottom: dashed 1px #5D835F;
|
|
||||||
}
|
|
||||||
div#AlphabetEvent table.alphaevent tbody tr td.ColumnType {
|
|
||||||
width: 15%;
|
|
||||||
}
|
|
||||||
div#AlphabetEvent table.alphaevent tbody tr td.ColumnGRAMPSID {
|
|
||||||
width: 15%;
|
|
||||||
}
|
|
||||||
div#AlphabetEvent table.alphaevent tbody tr td.ColumnDate {
|
|
||||||
width: 15%;
|
|
||||||
}
|
|
||||||
div#AlphabetEvent table.alphaevent tbody tr td.ColumnPerson {
|
|
||||||
width: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Subsections
|
/* Subsections
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#Home, #Introduction, #Contact {
|
#Home, #Introduction, #Contact {
|
||||||
|
@ -122,18 +122,24 @@ from libhtmlbackend import HtmlBackend
|
|||||||
# Translatable strings for variables within this plugin
|
# Translatable strings for variables within this plugin
|
||||||
# gettext carries a huge footprint with it.
|
# gettext carries a huge footprint with it.
|
||||||
AHEAD = _("Attributes")
|
AHEAD = _("Attributes")
|
||||||
|
BIRTH = _("Birth")
|
||||||
CITY = _("City")
|
CITY = _("City")
|
||||||
COUNTY = _("County")
|
COUNTY = _("County")
|
||||||
COUNTRY = _("Country")
|
COUNTRY = _("Country")
|
||||||
|
DEATH = _("Death")
|
||||||
DHEAD = _("Date")
|
DHEAD = _("Date")
|
||||||
DESCRHEAD = _("Description")
|
DESCRHEAD = _("Description")
|
||||||
|
_EVENT = _("Eent")
|
||||||
GRAMPSID = _("Gramps ID")
|
GRAMPSID = _("Gramps ID")
|
||||||
LATITUDE = _("Latitude")
|
LATITUDE = _("Latitude")
|
||||||
LOCATIONS = _("Alternate Locations")
|
LOCATIONS = _("Alternate Locations")
|
||||||
LONGITUDE = _("Longitude")
|
LONGITUDE = _("Longitude")
|
||||||
NHEAD = _("Notes")
|
NHEAD = _("Notes")
|
||||||
|
PARENTS = _("Parents")
|
||||||
PARISH = _("Church Parish")
|
PARISH = _("Church Parish")
|
||||||
|
_PARTNER = _("Partner")
|
||||||
PHEAD = _("Place")
|
PHEAD = _("Place")
|
||||||
|
_PERSON = _("Person")
|
||||||
PHONE = _("Phone")
|
PHONE = _("Phone")
|
||||||
POSTAL = _("Postal Code")
|
POSTAL = _("Postal Code")
|
||||||
SHEAD = _("Sources")
|
SHEAD = _("Sources")
|
||||||
@ -152,7 +158,7 @@ _NARRATIVESCREEN = "narrative-screen.css"
|
|||||||
_NARRATIVEPRINT = "narrative-print.css"
|
_NARRATIVEPRINT = "narrative-print.css"
|
||||||
|
|
||||||
# variables for alphabet_navigation()
|
# variables for alphabet_navigation()
|
||||||
_PERSON, _PLACE = 0, 1
|
_KEYPERSON, _KEYPLACE, _KEYEVENT, _ALPHAEVENT = 0, 1, 2, 3
|
||||||
|
|
||||||
# Web page filename extensions
|
# Web page filename extensions
|
||||||
_WEB_EXT = ['.html', '.htm', '.shtml', '.php', '.php3', '.cgi']
|
_WEB_EXT = ['.html', '.htm', '.shtml', '.php', '.php3', '.cgi']
|
||||||
@ -323,14 +329,11 @@ class BasePage(object):
|
|||||||
|
|
||||||
if showsrc:
|
if showsrc:
|
||||||
srcrefs = self.get_citation_links(attr.get_source_references()) or " "
|
srcrefs = self.get_citation_links(attr.get_source_references()) or " "
|
||||||
source_row = ("Sources", srcrefs)
|
attr_data_row.append(("Sources", srcrefs))
|
||||||
attr_data_row.append(source_row)
|
|
||||||
|
|
||||||
# get attribute note list
|
# get attribute note list
|
||||||
notelist = attr.get_note_list()
|
notelist = self.display_note_list(attr.get_note_list() ) or " "
|
||||||
notelist = self.display_note_list(notelist) or " "
|
attr_data_row.append(("Notes", notelist))
|
||||||
note_row = ("Notes", notelist)
|
|
||||||
attr_data_row.append(note_row)
|
|
||||||
|
|
||||||
# display attribute list
|
# display attribute list
|
||||||
trow.extend(
|
trow.extend(
|
||||||
@ -535,7 +538,7 @@ class BasePage(object):
|
|||||||
# position 0 = translatable label, position 1 = column class
|
# position 0 = translatable label, position 1 = column class
|
||||||
# position 2 = data
|
# position 2 = data
|
||||||
info = [
|
info = [
|
||||||
[_("Event"), "Event", evt_hyper],
|
[_EVENT, "Event", evt_hyper],
|
||||||
[DHEAD, "Date", _dd.display(evt.get_date_object() )] ]
|
[DHEAD, "Date", _dd.display(evt.get_date_object() )] ]
|
||||||
|
|
||||||
if showplc:
|
if showplc:
|
||||||
@ -592,7 +595,7 @@ class BasePage(object):
|
|||||||
]
|
]
|
||||||
|
|
||||||
# finish the label's missing piece
|
# finish the label's missing piece
|
||||||
header_row[5][0] += _("Parents") if LDSSealedType == "Person" else _("Spouse")
|
header_row[5][0] += PARENTS if LDSSealedType == "Person" else _("Spouse")
|
||||||
|
|
||||||
trow.extend(
|
trow.extend(
|
||||||
Html("th", label, class_ = "Column" + colclass, inline = True)
|
Html("th", label, class_ = "Column" + colclass, inline = True)
|
||||||
@ -935,7 +938,7 @@ class BasePage(object):
|
|||||||
# return footer to its callers
|
# return footer to its callers
|
||||||
return footer
|
return footer
|
||||||
|
|
||||||
def write_header(self, title):
|
def write_header(self, title, key):
|
||||||
"""
|
"""
|
||||||
Note. 'title' is used as currentsection in the navigation links and
|
Note. 'title' is used as currentsection in the navigation links and
|
||||||
as part of the header title.
|
as part of the header title.
|
||||||
@ -993,25 +996,28 @@ class BasePage(object):
|
|||||||
head += meta
|
head += meta
|
||||||
head += links
|
head += links
|
||||||
|
|
||||||
# begin header section
|
# alpha event pages do not need these things
|
||||||
headerdiv = (Html("div", id = 'header') +
|
if key is not _ALPHAEVENT:
|
||||||
Html("h1", html_escape(self.title_str), id = "SiteTitle", inline = True)
|
|
||||||
)
|
|
||||||
body += headerdiv
|
|
||||||
|
|
||||||
header_note = self.report.options['headernote']
|
# begin header section
|
||||||
if header_note:
|
headerdiv = (Html("div", id = 'header') +
|
||||||
note = db.get_note_from_gramps_id(header_note)
|
Html("h1", html_escape(self.title_str), id = "SiteTitle", inline = True)
|
||||||
note_text = self.get_note_format(note)
|
)
|
||||||
|
body += headerdiv
|
||||||
|
|
||||||
user_header = Html("div", id = 'user_header')
|
header_note = self.report.options['headernote']
|
||||||
headerdiv += user_header
|
if header_note:
|
||||||
|
note = db.get_note_from_gramps_id(header_note)
|
||||||
|
note_text = self.get_note_format(note)
|
||||||
|
|
||||||
|
user_header = Html("div", id = 'user_header')
|
||||||
|
headerdiv += user_header
|
||||||
|
|
||||||
# attach note
|
# attach note
|
||||||
user_header += note_text
|
user_header += note_text
|
||||||
|
|
||||||
# Begin Navigation Menu
|
# Begin Navigation Menu
|
||||||
body += self.display_nav_links(title)
|
body += self.display_nav_links(title)
|
||||||
|
|
||||||
# return to its caller, page and body
|
# return to its caller, page and body
|
||||||
return page, body
|
return page, body
|
||||||
@ -1340,9 +1346,10 @@ class BasePage(object):
|
|||||||
confidence = None
|
confidence = None
|
||||||
|
|
||||||
tmp.extend("%s: %s" % (label, data)
|
tmp.extend("%s: %s" % (label, data)
|
||||||
for (label, data) in [(DHEAD, _dd.display(sref.date)),
|
for (label, data) in [
|
||||||
(_PAGE, sref.page),
|
[DHEAD, _dd.display(sref.date)],
|
||||||
(_CONFIDENCE, confidence)]
|
[_PAGE, sref.page],
|
||||||
|
[_CONFIDENCE, confidence] ]
|
||||||
if data)
|
if data)
|
||||||
|
|
||||||
tmp.extend("%s: %s" %
|
tmp.extend("%s: %s" %
|
||||||
@ -1598,7 +1605,7 @@ class IndividualListPage(BasePage):
|
|||||||
showparents = report.options['showparents']
|
showparents = report.options['showparents']
|
||||||
|
|
||||||
of = self.report.create_file("individuals")
|
of = self.report.create_file("individuals")
|
||||||
indlistpage, body = self.write_header(_("Individuals"))
|
indlistpage, body = self.write_header(_("Individuals"), _KEYPERSON)
|
||||||
|
|
||||||
# begin Individuals division
|
# begin Individuals division
|
||||||
with Html("div", class_ = "content", id = "Individuals") as individuallist:
|
with Html("div", class_ = "content", id = "Individuals") as individuallist:
|
||||||
@ -1611,8 +1618,8 @@ class IndividualListPage(BasePage):
|
|||||||
individuallist += Html("p", msg, id = "description")
|
individuallist += Html("p", msg, id = "description")
|
||||||
|
|
||||||
# add alphabet navigation
|
# add alphabet navigation
|
||||||
menu_set = get_first_letters(db, person_handle_list, _PERSON)
|
menu_set = get_first_letters(db, person_handle_list, _KEYPERSON)
|
||||||
alpha_nav = alphabet_navigation(menu_set)
|
alpha_nav, menu_set = alphabet_navigation(menu_set, _KEYPERSON)
|
||||||
if alpha_nav is not None:
|
if alpha_nav is not None:
|
||||||
individuallist += alpha_nav
|
individuallist += alpha_nav
|
||||||
|
|
||||||
@ -1631,16 +1638,16 @@ class IndividualListPage(BasePage):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if showbirth:
|
if showbirth:
|
||||||
trow += Html("th", _("Birth"), class_ = "ColumnBirth", inline = True)
|
trow += Html("th", BIRTH, class_ = "ColumnBirth", inline = True)
|
||||||
|
|
||||||
if showdeath:
|
if showdeath:
|
||||||
trow += Html("th", _("Death"), class_ = "ColumnDeath", inline = True)
|
trow += Html("th", DEATH, class_ = "ColumnDeath", inline = True)
|
||||||
|
|
||||||
if showpartner:
|
if showpartner:
|
||||||
trow += Html("th", _("Partner"), class_ = "ColumnPartner", inline = True)
|
trow += Html("th", _PARTNER, class_ = "ColumnPartner", inline = True)
|
||||||
|
|
||||||
if showparents:
|
if showparents:
|
||||||
trow += Html("th", _("Parents"), class_ = "ColumnParents", inline = True)
|
trow += Html("th", PARENTS, class_ = "ColumnParents", inline = True)
|
||||||
|
|
||||||
tbody = Html("tbody")
|
tbody = Html("tbody")
|
||||||
table += tbody
|
table += tbody
|
||||||
@ -1788,7 +1795,7 @@ class SurnamePage(BasePage):
|
|||||||
|
|
||||||
of = self.report.create_file(name_to_md5(surname), "srn")
|
of = self.report.create_file(name_to_md5(surname), "srn")
|
||||||
self.up = True
|
self.up = True
|
||||||
surnamepage, body = self.write_header("%s - %s" % (_("Surname"), surname))
|
surnamepage, body = self.write_header("%s - %s" % (_("Surname"), surname), _KEYPERSON)
|
||||||
|
|
||||||
# begin SurnameDetail division
|
# begin SurnameDetail division
|
||||||
with Html("div", class_ = "content", id = "SurnameDetail") as surnamedetail:
|
with Html("div", class_ = "content", id = "SurnameDetail") as surnamedetail:
|
||||||
@ -1815,16 +1822,16 @@ class SurnamePage(BasePage):
|
|||||||
trow += Html("th", _("Name"), class_ = "ColumnName", inline = True)
|
trow += Html("th", _("Name"), class_ = "ColumnName", inline = True)
|
||||||
|
|
||||||
if showbirth:
|
if showbirth:
|
||||||
trow += Html("th", _("Birth"), class_ = "ColumnBirth", inline = True)
|
trow += Html("th", BIRTH, class_ = "ColumnBirth", inline = True)
|
||||||
|
|
||||||
if showdeath:
|
if showdeath:
|
||||||
trow += Html("th", _("Death"), class_ = "ColumnDeath", inline = True)
|
trow += Html("th", DEATH, class_ = "ColumnDeath", inline = True)
|
||||||
|
|
||||||
if showpartner:
|
if showpartner:
|
||||||
trow += Html("th", _("Partner"), class_ = "ColumnPartner", inline = True)
|
trow += Html("th", _PARTNER, class_ = "ColumnPartner", inline = True)
|
||||||
|
|
||||||
if showparents:
|
if showparents:
|
||||||
trow += Html("th", _("Parents"), class_ = "ColumnParents", inline = True)
|
trow += Html("th", PARENTS, class_ = "ColumnParents", inline = True)
|
||||||
|
|
||||||
# begin table body
|
# begin table body
|
||||||
tbody = Html("tbody")
|
tbody = Html("tbody")
|
||||||
@ -1942,7 +1949,7 @@ class PlaceListPage(BasePage):
|
|||||||
db = report.database
|
db = report.database
|
||||||
|
|
||||||
of = self.report.create_file("places")
|
of = self.report.create_file("places")
|
||||||
placelistpage, body = self.write_header(_("Places"))
|
placelistpage, body = self.write_header(_("Places"), _KEYPLACE)
|
||||||
|
|
||||||
# begin places division
|
# begin places division
|
||||||
with Html("div", class_ = "content", id = "Places") as placelist:
|
with Html("div", class_ = "content", id = "Places") as placelist:
|
||||||
@ -1955,8 +1962,8 @@ class PlaceListPage(BasePage):
|
|||||||
placelist += Html("p", msg, id = "description")
|
placelist += Html("p", msg, id = "description")
|
||||||
|
|
||||||
# begin alphabet navigation
|
# begin alphabet navigation
|
||||||
menu_set = get_first_letters(db, place_handles, _PLACE)
|
menu_set = get_first_letters(db, place_handles, _KEYPLACE)
|
||||||
alpha_nav = alphabet_navigation(menu_set)
|
alpha_nav, menu_set = alphabet_navigation(menu_set, _KEYPLACE)
|
||||||
if alpha_nav is not None:
|
if alpha_nav is not None:
|
||||||
placelist += alpha_nav
|
placelist += alpha_nav
|
||||||
|
|
||||||
@ -2030,7 +2037,7 @@ class PlacePage(BasePage):
|
|||||||
of = self.report.create_file(place.get_handle(), "plc")
|
of = self.report.create_file(place.get_handle(), "plc")
|
||||||
self.up = True
|
self.up = True
|
||||||
self.page_title = ReportUtils.place_name(db, place_handle)
|
self.page_title = ReportUtils.place_name(db, place_handle)
|
||||||
placepage, body = self.write_header(_("Places"))
|
placepage, body = self.write_header(_("Places"), _KEYPLACE)
|
||||||
|
|
||||||
# begin PlaceDetail Division
|
# begin PlaceDetail Division
|
||||||
with Html("div", class_ = "content", id = "PlaceDetail") as placedetail:
|
with Html("div", class_ = "content", id = "PlaceDetail") as placedetail:
|
||||||
@ -2090,13 +2097,19 @@ class PlacePage(BasePage):
|
|||||||
self.XHTMLWriter(placepage, of)
|
self.XHTMLWriter(placepage, of)
|
||||||
|
|
||||||
class EventListPage(BasePage):
|
class EventListPage(BasePage):
|
||||||
|
def __init__(self, report, title, event_types, event_handle_list, ind_list):
|
||||||
|
"""
|
||||||
|
Will create the event list page
|
||||||
|
|
||||||
def __init__(self, report, title, event_dict):
|
@param: event_types: a list of the type in the events database for this class
|
||||||
|
@param: event_handle_list -- a list of event handles
|
||||||
|
#psram: ind_list -- person handles for this database
|
||||||
|
"""
|
||||||
BasePage.__init__(self, report, title)
|
BasePage.__init__(self, report, title)
|
||||||
db = report.database
|
db = report.database
|
||||||
|
|
||||||
of = self.report.create_file("events")
|
of = self.report.create_file("events")
|
||||||
eventslistpage, body = self.write_header(_("Events"))
|
eventslistpage, body = self.write_header(_("Events"), _KEYEVENT)
|
||||||
|
|
||||||
# begin events list division
|
# begin events list division
|
||||||
with Html("div", class_ = "content", id = "EventList") as eventlist:
|
with Html("div", class_ = "content", id = "EventList") as eventlist:
|
||||||
@ -2104,49 +2117,103 @@ class EventListPage(BasePage):
|
|||||||
|
|
||||||
msg = _("This page contains an index of all the events in the "
|
msg = _("This page contains an index of all the events in the "
|
||||||
"database, sorted by their type, date (if one is present), "
|
"database, sorted by their type, date (if one is present), "
|
||||||
"and person’s surname. Clicking on an event’s type "
|
"Clicking on an event’s type will load a page of those type of events.")
|
||||||
"will take you to that event’s page. Clicking on a "
|
|
||||||
"person’s name will take you to that person’s page. "
|
|
||||||
"The person’s name will only be shown once for their events.")
|
|
||||||
eventlist += Html("p", msg, id = "description")
|
eventlist += Html("p", msg, id = "description")
|
||||||
|
|
||||||
# begin event list table and table head
|
# get alphabet navigation for class EventListPage
|
||||||
with Html("table", class_ = "infolist eventlist") as table:
|
alpha_nav, event_types = alphabet_navigation(event_types, _ALPHAEVENT)
|
||||||
|
if alpha_nav is not None:
|
||||||
|
eventlist += alpha_nav
|
||||||
|
|
||||||
|
# begin alphabet event table
|
||||||
|
with Html("table", class_ = "infolist alphaevent") as table:
|
||||||
eventlist += table
|
eventlist += table
|
||||||
|
|
||||||
thead = Html("thead")
|
thead = Html("thead")
|
||||||
table += thead
|
table += thead
|
||||||
|
|
||||||
# begin table header row
|
|
||||||
trow = Html("tr")
|
trow = Html("tr")
|
||||||
thead += trow
|
thead += trow
|
||||||
|
|
||||||
header_row = [
|
|
||||||
[_("Event"), "Event"],
|
|
||||||
[DHEAD, "Date"],
|
|
||||||
[_("Person"), "Person"],
|
|
||||||
[_("Partner"), "Partner"] ]
|
|
||||||
|
|
||||||
trow.extend(
|
trow.extend(
|
||||||
Html("th", label, class_ = "Column" + colclass, inline = True)
|
Html("th", label, class_ = "Column" + colclass, inline = True)
|
||||||
for (label, colclass) in header_row)
|
for (label, colclass) in [
|
||||||
|
[THEAD, "Type"],
|
||||||
|
[GRAMPSID, "GRAMPSID"],
|
||||||
|
[DHEAD, "Date"],
|
||||||
|
[_PERSON, "Person"] ]
|
||||||
|
)
|
||||||
|
|
||||||
# begin table body
|
|
||||||
tbody = Html("tbody")
|
tbody = Html("tbody")
|
||||||
table += tbody
|
table += tbody
|
||||||
|
|
||||||
for (person, event_list) in event_dict:
|
# separate events by their type and then thier event handles
|
||||||
|
for (evt_type, datalist) in sort_event_types(db, event_types, event_handle_list):
|
||||||
|
first_event = True
|
||||||
|
|
||||||
first = True
|
for (gid, date, event_handle) in datalist:
|
||||||
for (evt_type, sort_date, sort_name, evt, evt_ref, partner) in event_list:
|
|
||||||
|
|
||||||
# write out event row
|
event = db.get_event_from_handle(event_handle)
|
||||||
tbody += self.write_event_row(person, partner, evt_type, evt, evt_ref, first)
|
|
||||||
|
|
||||||
# show the individual's name only once for their events
|
trow = Html("tr")
|
||||||
first = False
|
tbody += trow
|
||||||
|
|
||||||
# and clearline for proper styling
|
# display Event type if first in the list
|
||||||
# and footer section
|
tcell = Html("td", class_ = "ColumnType", inline = True)
|
||||||
|
trow += tcell
|
||||||
|
if first_event:
|
||||||
|
trow.attr = 'class = "BeginEvent"'
|
||||||
|
tcell += Html("a", evt_type, name = "%s" % evt_type, inline = True)
|
||||||
|
else:
|
||||||
|
tcell += " "
|
||||||
|
|
||||||
|
# GRAMPS ID
|
||||||
|
tcell = Html("td", class_ = "ColumnGRAMPSID", inline = True)
|
||||||
|
trow += tcell
|
||||||
|
if not self.noid and gid:
|
||||||
|
tcell += gid
|
||||||
|
else:
|
||||||
|
tcell += " "
|
||||||
|
|
||||||
|
# event date
|
||||||
|
tcell = Html("td", class_ = "ColumnDate", inline = True)
|
||||||
|
trow += tcell
|
||||||
|
if date and date is not Date.EMPTY:
|
||||||
|
tcell += _dd.display(date)
|
||||||
|
else:
|
||||||
|
tcell += " "
|
||||||
|
|
||||||
|
# Person
|
||||||
|
if evt_type in ["Divorce", "Marriage"]:
|
||||||
|
handle_list = db.find_backlink_handles(event_handle,
|
||||||
|
include_classes = ['Person', 'Family'])
|
||||||
|
else:
|
||||||
|
handle_list = db.find_backlink_handles(event_handle, include_classes=['Person'])
|
||||||
|
first_person = True
|
||||||
|
|
||||||
|
tcell = Html("td", class_ = "ColumnPerson")
|
||||||
|
trow += tcell
|
||||||
|
|
||||||
|
for handle in handle_list:
|
||||||
|
|
||||||
|
person = db.get_person_from_handle(handle)
|
||||||
|
if person:
|
||||||
|
person_name = self.get_name(person)
|
||||||
|
|
||||||
|
if not first_person:
|
||||||
|
tcell += ", "
|
||||||
|
if handle in ind_list:
|
||||||
|
url = self.report.build_url_fname_html(handle, "ppl", True)
|
||||||
|
tcell += self.person_link(url, person, True)
|
||||||
|
else:
|
||||||
|
tcell += person_name
|
||||||
|
else:
|
||||||
|
tcell += " "
|
||||||
|
first_person = False
|
||||||
|
first_event = False
|
||||||
|
|
||||||
|
# add clearline for proper styling
|
||||||
|
# add footer section
|
||||||
footer = self.write_footer()
|
footer = self.write_footer()
|
||||||
body += (fullclear, footer)
|
body += (fullclear, footer)
|
||||||
|
|
||||||
@ -2154,62 +2221,6 @@ class EventListPage(BasePage):
|
|||||||
# and close the file
|
# and close the file
|
||||||
self.XHTMLWriter(eventslistpage, of)
|
self.XHTMLWriter(eventslistpage, of)
|
||||||
|
|
||||||
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: first = used for only showing the person once for list of events
|
|
||||||
"""
|
|
||||||
subdirs = False
|
|
||||||
|
|
||||||
# begin table row
|
|
||||||
trow = Html("tr")
|
|
||||||
|
|
||||||
if first:
|
|
||||||
trow.attr = 'class = "BeginName"'
|
|
||||||
|
|
||||||
# get person's hyperlink
|
|
||||||
url = self.report.build_url_fname_html(person.handle, "ppl", subdirs)
|
|
||||||
person_hyper = self.person_link(url, person, True, first, gid = person.gramps_id)
|
|
||||||
|
|
||||||
# get event data
|
|
||||||
"""
|
|
||||||
for more information: see get_event_data()
|
|
||||||
"""
|
|
||||||
event_data = self.get_event_data(evt, evt_ref, False, False, False, False, subdirs, True)
|
|
||||||
trow.extend(
|
|
||||||
Html("td", data or " ", class_ = "Column" + colclass,
|
|
||||||
inline = (not data or colclass == "Event" or colclass == "Date"))
|
|
||||||
for (label, colclass, data) in event_data)
|
|
||||||
|
|
||||||
# determine if same row or not?
|
|
||||||
samerow = (person_hyper == " ")
|
|
||||||
|
|
||||||
# display person hyperlink
|
|
||||||
trow += Html("td", person_hyper, class_ = "ColumnPerson", inline = samerow)
|
|
||||||
|
|
||||||
# get partner hyperlink
|
|
||||||
# display partner if event is either a Marriage or Divorce?
|
|
||||||
partner_hyper = " "
|
|
||||||
if partner is not None:
|
|
||||||
|
|
||||||
# get partner hyperlink
|
|
||||||
url = self.report.build_url_fname_html(partner.handle, "ppl", subdirs)
|
|
||||||
partner_hyper = self.person_link(url, partner, True, gid = partner.gramps_id)
|
|
||||||
|
|
||||||
# determine if same row or not?
|
|
||||||
samerow = (partner_hyper == " ")
|
|
||||||
|
|
||||||
trow += Html("td", partner_hyper, class_ = "ColumnPartner", inline = samerow)
|
|
||||||
|
|
||||||
# return EventList row to its caller
|
|
||||||
return trow
|
|
||||||
|
|
||||||
class EventPage(BasePage):
|
class EventPage(BasePage):
|
||||||
|
|
||||||
def __init__(self, report, title, person, partner, evt_type, event, evt_ref):
|
def __init__(self, report, title, person, partner, evt_type, event, evt_ref):
|
||||||
@ -2219,7 +2230,7 @@ class EventPage(BasePage):
|
|||||||
subdirs = True
|
subdirs = True
|
||||||
|
|
||||||
of = self.report.create_file(evt_ref.ref, "evt")
|
of = self.report.create_file(evt_ref.ref, "evt")
|
||||||
eventpage, body = self.write_header(_("Events"))
|
eventpage, body = self.write_header(_("Events"), _KEYEVENT)
|
||||||
|
|
||||||
# start event page division
|
# start event page division
|
||||||
with Html("div", class_ = "content", id = "EventDetail") as eventdetail:
|
with Html("div", class_ = "content", id = "EventDetail") as eventdetail:
|
||||||
@ -2270,7 +2281,7 @@ class EventPage(BasePage):
|
|||||||
url = self.report.build_url_fname_html(person.handle, "ppl", self.up)
|
url = self.report.build_url_fname_html(person.handle, "ppl", self.up)
|
||||||
person_hyper = self.person_link(url, person, True, gid = person.gramps_id)
|
person_hyper = self.person_link(url, person, True, gid = person.gramps_id)
|
||||||
trow = Html("tr") + (
|
trow = Html("tr") + (
|
||||||
Html("td", _("Person"), class_ = "ColumnAttribute", inline = True),
|
Html("td", _PERSON, class_ = "ColumnAttribute", inline = True),
|
||||||
Html("td", person_hyper, class_ = "ColumnPerson")
|
Html("td", person_hyper, class_ = "ColumnPerson")
|
||||||
)
|
)
|
||||||
tbody += trow
|
tbody += trow
|
||||||
@ -2280,7 +2291,7 @@ class EventPage(BasePage):
|
|||||||
url = self.report.build_url_fname_html(partner.handle, "ppl", self.up)
|
url = self.report.build_url_fname_html(partner.handle, "ppl", self.up)
|
||||||
partner_hyper = self.person_link(url, partner, True, gid = partner.gramps_id)
|
partner_hyper = self.person_link(url, partner, True, gid = partner.gramps_id)
|
||||||
trow = Html("tr") + (
|
trow = Html("tr") + (
|
||||||
Html("td", _("Partner"), class_ = "ColumnAttribute", inline = True),
|
Html("td", _PARTNER, class_ = "ColumnAttribute", inline = True),
|
||||||
Html("td", partner_hyper, class_ = "ColumnPartner")
|
Html("td", partner_hyper, class_ = "ColumnPartner")
|
||||||
)
|
)
|
||||||
tbody += trow
|
tbody += trow
|
||||||
@ -2396,7 +2407,7 @@ class MediaPage(BasePage):
|
|||||||
|
|
||||||
self.copy_thumbnail(handle, media)
|
self.copy_thumbnail(handle, media)
|
||||||
self.page_title = media.get_description()
|
self.page_title = media.get_description()
|
||||||
mediapage, body = self.write_header("%s - %s" % (_("Media"), self.page_title))
|
mediapage, body = self.write_header("%s - %s" % (_("Media"), self.page_title), _KEYPERSON)
|
||||||
|
|
||||||
# begin MediaDetail division
|
# begin MediaDetail division
|
||||||
with Html("div", class_ = "content", id = "GalleryDetail") as mediadetail:
|
with Html("div", class_ = "content", id = "GalleryDetail") as mediadetail:
|
||||||
@ -2691,10 +2702,10 @@ class SurnameListPage(BasePage):
|
|||||||
|
|
||||||
if order_by == self.ORDER_BY_NAME:
|
if order_by == self.ORDER_BY_NAME:
|
||||||
of = self.report.create_file(filename)
|
of = self.report.create_file(filename)
|
||||||
surnamelistpage, body = self.write_header(_('Surnames'))
|
surnamelistpage, body = self.write_header(_('Surnames'), _KEYPERSON)
|
||||||
else:
|
else:
|
||||||
of = self.report.create_file("surnames_count")
|
of = self.report.create_file("surnames_count")
|
||||||
surnamelistpage, body = self.write_header(_('Surnames by person count'))
|
surnamelistpage, body = self.write_header(_('Surnames by person count'), _KEYPERSON)
|
||||||
|
|
||||||
# begin surnames division
|
# begin surnames division
|
||||||
with Html("div", class_ = "content", id = "surnames") as surnamelist:
|
with Html("div", class_ = "content", id = "surnames") as surnamelist:
|
||||||
@ -2710,8 +2721,8 @@ class SurnameListPage(BasePage):
|
|||||||
# add alphabet navigation...
|
# add alphabet navigation...
|
||||||
# only if surname list not surname count
|
# only if surname list not surname count
|
||||||
if order_by == self.ORDER_BY_NAME:
|
if order_by == self.ORDER_BY_NAME:
|
||||||
menu_set = get_first_letters(db, person_handle_list, _PERSON)
|
menu_set = get_first_letters(db, person_handle_list, _KEYPERSON)
|
||||||
alpha_nav = alphabet_navigation(menu_set)
|
alpha_nav, menu_set = alphabet_navigation(menu_set, _KEYPERSON)
|
||||||
if alpha_nav is not None:
|
if alpha_nav is not None:
|
||||||
surnamelist += alpha_nav
|
surnamelist += alpha_nav
|
||||||
|
|
||||||
@ -2819,7 +2830,7 @@ class IntroductionPage(BasePage):
|
|||||||
db = report.database
|
db = report.database
|
||||||
|
|
||||||
of = self.report.create_file(report.intro_fname)
|
of = self.report.create_file(report.intro_fname)
|
||||||
intropage, body = self.write_header(_('Introduction'))
|
intropage, body = self.write_header(_('Introduction'), _KEYPERSON)
|
||||||
|
|
||||||
# begin Introduction division
|
# begin Introduction division
|
||||||
with Html("div", class_ = "content", id = "Introduction") as section:
|
with Html("div", class_ = "content", id = "Introduction") as section:
|
||||||
@ -2856,7 +2867,7 @@ class HomePage(BasePage):
|
|||||||
db = report.database
|
db = report.database
|
||||||
|
|
||||||
of = self.report.create_file("index")
|
of = self.report.create_file("index")
|
||||||
homepage, body = self.write_header(_('html|Home'))
|
homepage, body = self.write_header(_('Home'), _KEYPERSON)
|
||||||
|
|
||||||
# begin home division
|
# begin home division
|
||||||
with Html("div", class_ = "content", id = "Home") as section:
|
with Html("div", class_ = "content", id = "Home") as section:
|
||||||
@ -2893,7 +2904,7 @@ class SourceListPage(BasePage):
|
|||||||
source_dict = {}
|
source_dict = {}
|
||||||
|
|
||||||
of = self.report.create_file("sources")
|
of = self.report.create_file("sources")
|
||||||
sourcelistpage, body = self.write_header(_("Sources"))
|
sourcelistpage, body = self.write_header(_("Sources"), _KEYPERSON)
|
||||||
|
|
||||||
# begin source list division
|
# begin source list division
|
||||||
with Html("div", class_ = "content", id = "Sources") as sourceslist:
|
with Html("div", class_ = "content", id = "Sources") as sourceslist:
|
||||||
@ -2964,7 +2975,7 @@ class SourcePage(BasePage):
|
|||||||
|
|
||||||
of = self.report.create_file(source.get_handle(), "src")
|
of = self.report.create_file(source.get_handle(), "src")
|
||||||
self.up = True
|
self.up = True
|
||||||
sourcepage, body = self.write_header(_('Sources'))
|
sourcepage, body = self.write_header(_('Sources'), _KEYPERSON)
|
||||||
|
|
||||||
# begin source detail division
|
# begin source detail division
|
||||||
with Html("div", class_ = "content", id = "SourceDetail") as section:
|
with Html("div", class_ = "content", id = "SourceDetail") as section:
|
||||||
@ -3032,7 +3043,7 @@ class MediaListPage(BasePage):
|
|||||||
db = report.database
|
db = report.database
|
||||||
|
|
||||||
of = self.report.create_file("media")
|
of = self.report.create_file("media")
|
||||||
medialistpage, body = self.write_header(_('Media'))
|
medialistpage, body = self.write_header(_('Media'), _KEYPERSON)
|
||||||
|
|
||||||
# begin gallery division
|
# begin gallery division
|
||||||
with Html("div", class_ = "content", id = "Gallery") as section:
|
with Html("div", class_ = "content", id = "Gallery") as section:
|
||||||
@ -3140,7 +3151,7 @@ class DownloadPage(BasePage):
|
|||||||
return
|
return
|
||||||
|
|
||||||
of = self.report.create_file("download")
|
of = self.report.create_file("download")
|
||||||
downloadpage, body = self.write_header(_('Download'))
|
downloadpage, body = self.write_header(_('Download'), _KEYPERSON)
|
||||||
|
|
||||||
# begin download page and table
|
# begin download page and table
|
||||||
with Html("div", class_ = "content", id = "Download") as download:
|
with Html("div", class_ = "content", id = "Download") as download:
|
||||||
@ -3247,7 +3258,7 @@ class ContactPage(BasePage):
|
|||||||
db = report.database
|
db = report.database
|
||||||
|
|
||||||
of = self.report.create_file("contact")
|
of = self.report.create_file("contact")
|
||||||
contactpage, body = self.write_header(_('Contact'))
|
contactpage, body = self.write_header(_('Contact'), _KEYPERSON)
|
||||||
|
|
||||||
# begin contact division
|
# begin contact division
|
||||||
with Html("div", class_ = "content", id = "Contact") as section:
|
with Html("div", class_ = "content", id = "Contact") as section:
|
||||||
@ -3328,7 +3339,7 @@ class IndividualPage(BasePage):
|
|||||||
|
|
||||||
of = self.report.create_file(person.handle, "ppl")
|
of = self.report.create_file(person.handle, "ppl")
|
||||||
self.up = True
|
self.up = True
|
||||||
indivdetpage, body = self.write_header(self.sort_name)
|
indivdetpage, body = self.write_header(self.sort_name, _KEYPERSON)
|
||||||
|
|
||||||
# begin individualdetail division
|
# begin individualdetail division
|
||||||
with Html("div", class_ = "content", id = 'IndividualDetail') as individualdetail:
|
with Html("div", class_ = "content", id = 'IndividualDetail') as individualdetail:
|
||||||
@ -3969,7 +3980,7 @@ class IndividualPage(BasePage):
|
|||||||
|
|
||||||
# begin parents division
|
# begin parents division
|
||||||
with Html("div", class_ = "subsection", id = "parents") as section:
|
with Html("div", class_ = "subsection", id = "parents") as section:
|
||||||
section += Html("h4", _("Parents"), inline = True)
|
section += Html("h4", PARENTS, inline = True)
|
||||||
|
|
||||||
# begin parents table
|
# begin parents table
|
||||||
with Html("table", class_ = "infolist") as table:
|
with Html("table", class_ = "infolist") as table:
|
||||||
@ -4272,9 +4283,9 @@ class IndividualPage(BasePage):
|
|||||||
elif gender == Person.MALE:
|
elif gender == Person.MALE:
|
||||||
relstr = _("Wife")
|
relstr = _("Wife")
|
||||||
else:
|
else:
|
||||||
relstr = _("Partner")
|
relstr = _PARTNER
|
||||||
else:
|
else:
|
||||||
relstr = _("Partner")
|
relstr = _PARTNER
|
||||||
|
|
||||||
partner_handle = ReportUtils.find_spouse(self.person, family)
|
partner_handle = ReportUtils.find_spouse(self.person, family)
|
||||||
if partner_handle:
|
if partner_handle:
|
||||||
@ -4373,7 +4384,7 @@ class IndividualPage(BasePage):
|
|||||||
# position 0 = translatable label, position 1 = column class, and
|
# position 0 = translatable label, position 1 = column class, and
|
||||||
# position 2 = data
|
# position 2 = data
|
||||||
event_header_row = [
|
event_header_row = [
|
||||||
(_("Event"), "Event"),
|
(_EVENT, "Event"),
|
||||||
(DHEAD, "Date") ]
|
(DHEAD, "Date") ]
|
||||||
|
|
||||||
if showplc:
|
if showplc:
|
||||||
@ -4449,7 +4460,7 @@ class RepositoryListPage(BasePage):
|
|||||||
db = report.database
|
db = report.database
|
||||||
|
|
||||||
of = self.report.create_file("repositories")
|
of = self.report.create_file("repositories")
|
||||||
repolistpage, body = self.write_header(_("Repositories"))
|
repolistpage, body = self.write_header(_("Repositories"), _KEYPERSON)
|
||||||
|
|
||||||
# begin RepositoryList division
|
# begin RepositoryList division
|
||||||
with Html("div", class_ = "content", id = "RepositoryList") as repositorylist:
|
with Html("div", class_ = "content", id = "RepositoryList") as repositorylist:
|
||||||
@ -4524,7 +4535,7 @@ class RepositoryPage(BasePage):
|
|||||||
|
|
||||||
of = self.report.create_file(handle, 'repo')
|
of = self.report.create_file(handle, 'repo')
|
||||||
self.up = True
|
self.up = True
|
||||||
repositorypage, body = self.write_header(_('Repositories'))
|
repositorypage, body = self.write_header(_('Repositories'), _KEYPERSON)
|
||||||
|
|
||||||
# begin RepositoryDetail division and page title
|
# begin RepositoryDetail division and page title
|
||||||
with Html("div", class_ = "content", id = "RepositoryDetail") as repositorydetail:
|
with Html("div", class_ = "content", id = "RepositoryDetail") as repositorydetail:
|
||||||
@ -4594,7 +4605,7 @@ class AddressBookListPage(BasePage):
|
|||||||
of = self.report.create_file("addressbook")
|
of = self.report.create_file("addressbook")
|
||||||
|
|
||||||
# Add xml, doctype, meta and stylesheets
|
# Add xml, doctype, meta and stylesheets
|
||||||
addressbooklistpage, body = self.write_header("%s - %s" % (title, _("Address Book List")))
|
addressbooklistpage, body = self.write_header("%s - %s" % (title, _("Address Bookt")), _KEYPERSON)
|
||||||
|
|
||||||
# begin AddressBookList division
|
# begin AddressBookList division
|
||||||
with Html("div", class_ = "content", id = "AddressBookList") as addressbooklist:
|
with Html("div", class_ = "content", id = "AddressBookList") as addressbooklist:
|
||||||
@ -4715,7 +4726,7 @@ class AddressBookPage(BasePage):
|
|||||||
|
|
||||||
# set the file name and open file
|
# set the file name and open file
|
||||||
of = self.report.create_file(person_handle, "addr")
|
of = self.report.create_file(person_handle, "addr")
|
||||||
addressbookpage, body = self.write_header("%s - %s" % (title, _("Address Book")))
|
addressbookpage, body = self.write_header("%s - %s" % (title, _("Address Book")), _KEYPERSON)
|
||||||
|
|
||||||
# begin address book page division and section title
|
# begin address book page division and section title
|
||||||
with Html("div", class_ = "content", id = "AddressBookDetail") as addressbookdetail:
|
with Html("div", class_ = "content", id = "AddressBookDetail") as addressbookdetail:
|
||||||
@ -4940,9 +4951,9 @@ class NavWebReport(Report):
|
|||||||
# build classes EventListPage and EventPage
|
# build classes EventListPage and EventPage
|
||||||
# build the events dictionary only if event pages are being created?
|
# build the events dictionary only if event pages are being created?
|
||||||
if self.inc_events:
|
if self.inc_events:
|
||||||
event_dict = []
|
event_dict, event_types, event_handle_list = [], [], []
|
||||||
self.build_events(ind_list, event_dict)
|
self.build_events(ind_list, event_dict, event_types, event_handle_list)
|
||||||
self.event_pages(event_dict)
|
self.event_pages(event_dict, event_types, event_handle_list, ind_list)
|
||||||
|
|
||||||
# build classes SourceListPage and SourcePage
|
# build classes SourceListPage and SourcePage
|
||||||
self.source_pages(source_list)
|
self.source_pages(source_list)
|
||||||
@ -5038,19 +5049,21 @@ class NavWebReport(Report):
|
|||||||
from_path = os.path.join(const.IMAGE_DIR, fname)
|
from_path = os.path.join(const.IMAGE_DIR, fname)
|
||||||
self.copy_file(from_path, fname, "images")
|
self.copy_file(from_path, fname, "images")
|
||||||
|
|
||||||
def build_events(self, ind_list, event_dict):
|
def build_events(self, ind_list, event_dict, event_types, event_handle_list):
|
||||||
"""
|
"""
|
||||||
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: ind_list = list of handles for persons in this database
|
||||||
@param: event_dict = a list of events from ind_list
|
@param: event_dict = a list of events from ind_list
|
||||||
|
@param: event_types -- will hold the difrferent event types for this database
|
||||||
|
@param: event_handle_list -- a list of event handles to be sorted by type
|
||||||
"""
|
"""
|
||||||
db = self.database
|
db = self.database
|
||||||
|
|
||||||
for person_handle in ind_list:
|
for person_handle in ind_list:
|
||||||
person = db.get_person_from_handle(person_handle)
|
person = db.get_person_from_handle(person_handle)
|
||||||
|
|
||||||
# begin events list for each person
|
# begin events list for each new person
|
||||||
event_list = []
|
event_list = []
|
||||||
|
|
||||||
# get sort name for sorting later
|
# get sort name for sorting later
|
||||||
@ -5073,6 +5086,18 @@ class NavWebReport(Report):
|
|||||||
# get event type
|
# get event type
|
||||||
evt_type = get_event_type(event, evt_ref)
|
evt_type = get_event_type(event, evt_ref)
|
||||||
|
|
||||||
|
# get event types for class EventsListPage
|
||||||
|
etype = None
|
||||||
|
_type = event.type.xml_str()
|
||||||
|
for xtype in EventType._DATAMAP:
|
||||||
|
if xtype[2] == _type:
|
||||||
|
etype = xtype[1]
|
||||||
|
break
|
||||||
|
|
||||||
|
if etype is not None:
|
||||||
|
event_types.append(etype)
|
||||||
|
event_handle_list.append(evt_ref.ref)
|
||||||
|
|
||||||
# get sot date as year/month/day, 2009/09/09,
|
# get sot date as year/month/day, 2009/09/09,
|
||||||
# or 0000/00/00 for non-existing date
|
# or 0000/00/00 for non-existing date
|
||||||
event_date = event.get_date_object()
|
event_date = event.get_date_object()
|
||||||
@ -5092,6 +5117,18 @@ class NavWebReport(Report):
|
|||||||
# get event type
|
# get event type
|
||||||
evt_type = get_event_type(event, evt_ref)
|
evt_type = get_event_type(event, evt_ref)
|
||||||
|
|
||||||
|
# get event types for class EventsListPage
|
||||||
|
etype = None
|
||||||
|
_type = event.type.xml_str()
|
||||||
|
for xtype in EventType._DATAMAP:
|
||||||
|
if xtype[2] == _type:
|
||||||
|
etype = xtype[1]
|
||||||
|
break
|
||||||
|
|
||||||
|
if etype is not None:
|
||||||
|
event_types.append(etype)
|
||||||
|
event_handle_list.append(evt_ref.ref)
|
||||||
|
|
||||||
# get sot date as year/month/day, see above for further info
|
# get sot date as year/month/day, see above for further info
|
||||||
event_date = event.get_date_object()
|
event_date = event.get_date_object()
|
||||||
year = event_date.get_year() or 0
|
year = event_date.get_year() or 0
|
||||||
@ -5100,8 +5137,7 @@ class NavWebReport(Report):
|
|||||||
sort_date = '%04d/%02d/%02d' % (year, month, day)
|
sort_date = '%04d/%02d/%02d' % (year, month, day)
|
||||||
|
|
||||||
# add event data
|
# add event data
|
||||||
event_list.append([evt_type, sort_date, sort_name, event,
|
event_list.append([evt_type, sort_date, sort_name, event, evt_ref, partner])
|
||||||
evt_ref, partner])
|
|
||||||
|
|
||||||
# sort the event_list
|
# sort the event_list
|
||||||
event_list.sort()
|
event_list.sort()
|
||||||
@ -5109,8 +5145,11 @@ class NavWebReport(Report):
|
|||||||
# combine person and their events together
|
# combine person and their events together
|
||||||
event_dict.append([person, event_list])
|
event_dict.append([person, event_list])
|
||||||
|
|
||||||
# return the events for class EventListPage and EventPage
|
# sort the types alphabetically
|
||||||
return event_dict
|
event_types.sort()
|
||||||
|
|
||||||
|
# return the events for EventListPage and EventPage
|
||||||
|
return event_dict, event_types, event_handle_list
|
||||||
|
|
||||||
def build_attributes(self, person):
|
def build_attributes(self, person):
|
||||||
""" build a list of attributes for each person """
|
""" build a list of attributes for each person """
|
||||||
@ -5226,20 +5265,26 @@ class NavWebReport(Report):
|
|||||||
PlacePage(self, self.title, place, source_list, place_list)
|
PlacePage(self, self.title, place, source_list, place_list)
|
||||||
self.progress.step()
|
self.progress.step()
|
||||||
|
|
||||||
def event_pages(self, event_dict):
|
def event_pages(self, event_dict, event_types, event_handle_list, ind_list):
|
||||||
"""
|
"""
|
||||||
a dump of all the events sorted by event type, date, and surname
|
a dump of all the events sorted by event type, date, and surname
|
||||||
for classes EventListPage and EventPage
|
for classes EventListPage and EventPage
|
||||||
"""
|
|
||||||
self.progress.set_pass(_('Creating event pages'), len(event_dict))
|
|
||||||
|
|
||||||
|
@param: event_dict -- all the data for class EventPage
|
||||||
|
@param: event_types -- a list of all the event types in this database
|
||||||
|
@param: event_handle_list -- a list of the event handles in the database to be used
|
||||||
|
"""
|
||||||
# send all data to the events list page
|
# send all data to the events list page
|
||||||
EventListPage(self, self.title, event_dict)
|
EventListPage(self, self.title, event_types, event_handle_list, ind_list)
|
||||||
|
|
||||||
|
# set up progress bar for event pages
|
||||||
|
self.progress.set_pass(_("Creating event pages"), len(event_dict))
|
||||||
|
|
||||||
for (person, event_list) in event_dict:
|
for (person, event_list) in event_dict:
|
||||||
self.progress.step()
|
self.progress.step()
|
||||||
|
|
||||||
for (evt_type, sort_date, sort_name, event, evt_ref, partner) in event_list:
|
for (evt_type, sort_date, sort_name, event, evt_ref, partner) in event_list:
|
||||||
|
self.progress.step()
|
||||||
|
|
||||||
# create individual event page
|
# create individual event page
|
||||||
EventPage(self, self.title, person, partner, evt_type, event, evt_ref)
|
EventPage(self, self.title, person, partner, evt_type, event, evt_ref)
|
||||||
@ -5978,6 +6023,30 @@ def sort_people(db, handle_list):
|
|||||||
|
|
||||||
return sorted_lists
|
return sorted_lists
|
||||||
|
|
||||||
|
def sort_event_types(db, event_types, event_handle_list):
|
||||||
|
"""
|
||||||
|
sort a list of event types and group them by their type
|
||||||
|
|
||||||
|
@param: event_types -- a dict of event types
|
||||||
|
@param: event_handle_list -- all event handles in this database
|
||||||
|
"""
|
||||||
|
|
||||||
|
event_dict = dict( (evt_type, []) for evt_type in event_types)
|
||||||
|
|
||||||
|
for handle in event_handle_list:
|
||||||
|
|
||||||
|
event = db.get_event_from_handle(handle)
|
||||||
|
event_type = event.type.xml_str()
|
||||||
|
|
||||||
|
# add the stuff from this event
|
||||||
|
if event_type in event_dict:
|
||||||
|
event_dict[event_type].append(
|
||||||
|
(event.gramps_id, event.get_date_object(), handle)
|
||||||
|
)
|
||||||
|
|
||||||
|
# return a list of tuples, one per event
|
||||||
|
return ( (event_type, event_list) for (event_type, event_list) in event_dict.iteritems() )
|
||||||
|
|
||||||
# Modified _get_regular_surname from WebCal.py to get prefix, first name, and suffix
|
# Modified _get_regular_surname from WebCal.py to get prefix, first name, and suffix
|
||||||
def _get_short_name(gender, name):
|
def _get_short_name(gender, name):
|
||||||
""" Will get prefix and suffix for all people passed through it """
|
""" Will get prefix and suffix for all people passed through it """
|
||||||
@ -6021,7 +6090,7 @@ def get_first_letters(db, handle_list, key):
|
|||||||
first_letters = []
|
first_letters = []
|
||||||
|
|
||||||
for handle in handle_list:
|
for handle in handle_list:
|
||||||
if key == _PERSON:
|
if key == _KEYPERSON:
|
||||||
keyname = __get_person_keyname(db, handle)
|
keyname = __get_person_keyname(db, handle)
|
||||||
else:
|
else:
|
||||||
keyname = __get_place_keyname(db, handle)
|
keyname = __get_place_keyname(db, handle)
|
||||||
@ -6032,16 +6101,15 @@ def get_first_letters(db, handle_list, key):
|
|||||||
|
|
||||||
return first_letters
|
return first_letters
|
||||||
|
|
||||||
def alphabet_navigation(menu_set):
|
def alphabet_navigation(menu_set, alphakey):
|
||||||
"""
|
"""
|
||||||
Will create the alphabet navigation bar for classes IndividualListPage,
|
Will create the alphabet navigation bar for classes IndividualListPage,
|
||||||
SurnameListPage, PlaceListPage, and EventList
|
SurnameListPage, PlaceListPage, and EventList
|
||||||
|
|
||||||
@param: menu_set -- a dictionary of either sorted letters or words
|
@param: menu_set -- a dictionary of either letters or words
|
||||||
|
@param: alphakey -- either Person, Place, or AlphaEvent
|
||||||
"""
|
"""
|
||||||
|
|
||||||
sorted_set = {}
|
sorted_set = {}
|
||||||
|
|
||||||
# The comment below from the glibc locale sv_SE in
|
# The comment below from the glibc locale sv_SE in
|
||||||
# localedata/locales/sv_SE :
|
# localedata/locales/sv_SE :
|
||||||
#
|
#
|
||||||
@ -6056,6 +6124,7 @@ def alphabet_navigation(menu_set):
|
|||||||
#
|
#
|
||||||
(lang_country, modifier ) = locale.getlocale()
|
(lang_country, modifier ) = locale.getlocale()
|
||||||
ltr = get_first_letters
|
ltr = get_first_letters
|
||||||
|
|
||||||
for menu_item in menu_set:
|
for menu_item in menu_set:
|
||||||
if menu_item in sorted_set:
|
if menu_item in sorted_set:
|
||||||
sorted_set[menu_item] += 1
|
sorted_set[menu_item] += 1
|
||||||
@ -6069,40 +6138,46 @@ def alphabet_navigation(menu_set):
|
|||||||
sorted_alpha_index = [(menu_item) for menu_item in sorted_alpha_index if menu_item != ","]
|
sorted_alpha_index = [(menu_item) for menu_item in sorted_alpha_index if menu_item != ","]
|
||||||
|
|
||||||
# remove any single spaces from the letter set also
|
# remove any single spaces from the letter set also
|
||||||
sorted_alpha_index = [(menu_item) for menu_item in sorted_alpha_index if menu_item != " "]
|
# Event Types can and do have spaces, so leave them alone for now...
|
||||||
|
if alphakey is not _ALPHAEVENT:
|
||||||
|
sorted_alpha_index = [(ltr) for ltr in sorted_alpha_index if ltr != " "]
|
||||||
|
|
||||||
# if no letters, return None back to its callers
|
# if no letters or words, return None to its callers
|
||||||
if not sorted_alpha_index:
|
if not sorted_alpha_index:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# begin alphabet division
|
num_ltrs = len(sorted_alpha_index)
|
||||||
|
num_of_cols = 34 if alphakey is not _ALPHAEVENT else 9
|
||||||
|
num_of_rows = ((num_ltrs // num_of_cols) + 1)
|
||||||
|
|
||||||
|
# begin alphabet navigation division
|
||||||
with Html("div", id = "alphabet") as alphabetnavigation:
|
with Html("div", id = "alphabet") as alphabetnavigation:
|
||||||
|
|
||||||
num_ltrs = len(sorted_alpha_index)
|
|
||||||
nrows = ((num_ltrs // 34) + 1)
|
|
||||||
|
|
||||||
index = 0
|
index = 0
|
||||||
for row in xrange(nrows):
|
for row in xrange(num_of_rows):
|
||||||
unordered = Html("ul")
|
unordered = Html("ul")
|
||||||
alphabetnavigation += unordered
|
alphabetnavigation += unordered
|
||||||
|
|
||||||
cols = 0
|
cols = 0
|
||||||
while (cols <= 34 and index < num_ltrs):
|
while (cols <= num_of_cols and index < num_ltrs):
|
||||||
list = Html("li", inline = True)
|
list = Html("li", inline = True)
|
||||||
unordered += list
|
unordered += list
|
||||||
|
|
||||||
menu_item = sorted_alpha_index[index]
|
menu_item = sorted_alpha_index[index]
|
||||||
if lang_country == "sv_SE" and ltr == u'V':
|
if lang_country == "sv_SE" and menu_item == u'V':
|
||||||
hyper = Html("a", "V,W", href = "#V,W", alt = "V,W")
|
hyper = Html("a", "V,W", href = "#V,W", alt = "V,W")
|
||||||
else:
|
else:
|
||||||
hyper = Html("a", menu_item, href = "#%s" % menu_item, alt = html_escape(menu_item))
|
hyper = Html("a", menu_item, href = "#%s" % menu_item, alt = html_escape(menu_item))
|
||||||
list += hyper
|
list += hyper
|
||||||
|
|
||||||
cols += 1
|
# increase letter/ word in sorted_alpha_index
|
||||||
index += 1
|
index += 1
|
||||||
|
cols += 1
|
||||||
|
num_of_rows -= 1
|
||||||
|
|
||||||
# return alphabet navigation to its callers
|
# return alphabet navigation, and menu_set to its callers
|
||||||
return alphabetnavigation
|
# EventListPage will reuse sorted_alpha_index
|
||||||
|
return alphabetnavigation, sorted_alpha_index
|
||||||
|
|
||||||
def _has_webpage_extension(url):
|
def _has_webpage_extension(url):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user