'
return s
def displayDrilldownExtraLabel(levelField, selectedFieldNames,
language, selectedFacets, sortKeys, total ):
previousUpField = ""
s = ''
upField = ""
if levelField == "drilldown.norm.date.decennium" and "drilldown.norm.date.centennium" in selectedFieldNames:
upField = "drilldown.norm.date.centennium"
elif levelField == "drilldown.norm.date.year" and "drilldown.norm.date.centennium" in selectedFieldNames:
upField = "drilldown.norm.date.centennium"
elif levelField == "drilldown.norm.date.year" and "drilldown.norm.date.decennium" in selectedFieldNames:
upField = "drilldown.norm.date.decennium"
elif levelField == "drilldown.norm.name.oneinitial" and "drilldown.norm.name.lastname" in selectedFieldNames:
upField = "drilldown.norm.name.lastname"
if upField:
for term in selectedFieldNames[upField]:
if not (upField == previousUpField):
# label = drilldownFieldNames.get(upField, {'en':upField, 'nl':upField})[language]
label = drilldownConfig.get(upField, section = 'fieldNames')
s += displayLabel(label)
drilldownArgs = set(selectedFacets)
drilldownArgs.remove(upField + ":" + term)
query = createDrilldownQuery(drilldownArgs, sortKeys)
s += displayItem(query, term, True, upField, language, total)
previousUpField = upField
return s
def displayDrilldownFields(total, docset, drilldownResults, multilevelResults, arguments, language):
chooseFromTitle = drilldownConfig.get('choosefrom')
selectedFacets = arguments.get('drilldown', [])
selectedFieldNames = {}
if selectedFacets:
for drilldownItem in selectedFacets:
fieldName, value = fieldAndTermSplit(drilldownItem)
if not fieldName in selectedFieldNames: selectedFieldNames[fieldName] = []
selectedFieldNames[fieldName].append(value)
yield '
'
yield '
' + chooseFromTitle +'
'
sortKeys = arguments.get('sortKeys', [''])[0]
if multilevelResults or total < 5000000:
# TP: result set is not too large, multilevel results will be calculated
# or this is already done (multilevelResults)
if not multilevelResults:
multilevelResults = any.multiLevelDrilldown(docset, ['date', 'author'])
for (fieldName, levelField), termCounts in multilevelResults:
if ( levelField == None ):
logger.error("displayDrilldownFields skipping record: " + fieldName )
levelField=''
yield displayDrilldownExtraLabel(levelField, selectedFieldNames,
language, selectedFacets, sortKeys, total)
label = drilldownConfig.get(levelField, section = 'fieldNames',default='LEEG')
yield displayItemGroup(label, termCounts, selectedFacets, levelField, selectedFieldNames,
arguments, language, sortKeys)
else:
for fieldName in multilevelResults:
result = multilevelResults[fieldName]
levelField = ''
if not 'level' in result:
logger.error("displayDrilldownFields skipping record: " + fieldName )
else: levelField = result['level']
yield displayDrilldownExtraLabel(levelField, selectedFieldNames,
language, selectedFacets, sortKeys, total)
label = drilldownConfig.get(levelField, section = 'fieldNames',default='LEEG')
termCounts = result['termCounts']
yield displayItemGroup(label, termCounts, selectedFacets, levelField, selectedFieldNames,
arguments, language, sortKeys)
fields = drilldownFields
# fields = sortedDrilldownFields
else:
# TP: result set is too large, only one level of the multilevel facests will be calculated.
fields = drilldownFieldsNoMultiLevel
if not drilldownResults:
drilldownResults = any.drilldown(docset, fields)
drilldownResultsAsDict = dict(drilldownResults)
else: drilldownResultsAsDict = drilldownResults
for fieldName, number, sorted in fields:
termCounts = []
if fieldName in drilldownResults:
termCounts = drilldownResults[fieldName]
else:
termCounts = drilldownResultsAsDict.get(fieldName,[])
label = drilldownConfig.get(fieldName, section = 'fieldNames')
if termCounts == []:
continue
yield displayItemGroup(label, termCounts, selectedFacets, fieldName, selectedFieldNames, arguments, language, sortKeys)
yield """
%(space)s
%(space)s """ % {'space': space}
def main(total, docset, drilldownResults, multilevelResults, arguments, path='', *args, **kwargs):
### forcing english as language
language = 'en'
# language = path.startswith('/en/') and 'en' or 'nl'
drilldownConfig.setDefaults(section='labels', language=language)
yield space + '
'
selectedFacets = arguments.get('drilldown', [])
selectedLabel= drilldownConfig.get('limitTo',default='Selected:')
sortKeys = arguments.get('sortKeys', [''])[0]
if selectedFacets:
yield space + '
%s
' % selectedLabel
for drilldownItem in selectedFacets:
fieldName, value = fieldAndTermSplit(drilldownItem)
drilldownArgs = set(selectedFacets)
drilldownArgs.remove(drilldownItem)
label = drilldownConfig.get(fieldName, section = 'fieldNames')
query = createDrilldownQuery(drilldownArgs, sortKeys)
term = displayTerm(value, fieldName, language)
yield displayFilter(query, value, label, term)
yield space + '
'
if total > 0:
yield displayDrilldownFields(total, docset, drilldownResults, multilevelResults, arguments, language)
yield space + '