Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions seeker/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class Column(object):
view = None
visible = False

def __init__(self, field, label=None, sort=None, value_format=None, template=None, header=None, export=True, highlight=None, field_definition=None):
def __init__(self, field, label=None, sort=None, value_format=None, template=None, header=None, export=True, highlight=None, field_definition=None, custom_cls=None):
self.field = field
self.label = label if label is not None else field.replace('_', ' ').replace('.raw', '').capitalize()
self.sort = sort
Expand All @@ -54,6 +54,7 @@ def __init__(self, field, label=None, sort=None, value_format=None, template=Non
self.export = export
self.highlight = highlight
self.field_definition = field_definition
self.custom_cls = custom_cls

def __str__(self):
return self.label
Expand Down Expand Up @@ -87,6 +88,8 @@ def bind(self, view, visible):
def header(self):
cls = '%s_%s' % (self.view.document._doc_type.name, self.field.replace('.', '_'))
cls += ' %s_%s' % (self.model_lower, self.field.replace('.', '_'))
if self.custom_cls:
cls += ' %s' % (self.custom_cls)
if not self.sort:
return mark_safe('<th class="%s">%s</th>' % (cls, self.header_html))
q = self.view.request.GET.copy()
Expand Down Expand Up @@ -403,11 +406,21 @@ def required_display_fields(self):
NOTE: The indexes defined in required_display are not used if display_column_sort_order has a value.
"""

custom_header_class = None
"""
Customizable html class to add to all (non-rank) seeker column headers
"""

custom_column_headers = {}
"""
This dictionary can be used to set custom text for a fields column header. The key is the field_name.
"""

custom_column_header_classes = {}
"""
This dictionary can be used to set custom html classes for a fields column header. The key is the field_name.
"""

analyzer = DEFAULT_ANALYZER
"""
The ES analyzer used for keyword searching.
Expand Down Expand Up @@ -585,8 +598,13 @@ def make_column(self, field_name):
sort = self.get_field_sort(field_name)
highlight = self.get_field_highlight(field_name)
header = self.custom_column_headers.get(field_name, None)
custom_cls = self.custom_header_class
if custom_cls:
custom_cls += ' ' + self.custom_column_header_classes.get(field_name, '')
else:
custom_cls = self.custom_column_header_classes.get(field_name, '')
field_definition = self.field_definitions.get(field_name)
return Column(field_name, label=label, sort=sort, highlight=highlight, header=header, field_definition=field_definition)
return Column(field_name, label=label, sort=sort, highlight=highlight, header=header, field_definition=field_definition, custom_cls=custom_cls)

def get_columns(self, display=None):
"""
Expand Down Expand Up @@ -1032,6 +1050,8 @@ def header(self, results=None):
cls += ' {}_{}'.format(self.view.document.__name__.lower(), self.field.replace('.', '_'))
if self.model_lower:
cls += ' {}_{}'.format(self.model_lower, self.field.replace('.', '_'))
if self.custom_cls:
cls += ' {}'.format(self.custom_cls)
if not self.sort:
return mark_safe('<th class="%s">%s</th>' % (cls, self.header_html))
current_sort = self.view.search_object['sort']
Expand Down