Add simple searchable column support for non-AJAX grids
idk maybe even AJAX grids can use? not gonna try at the moment
This commit is contained in:
parent
63fef16c37
commit
ec2600ddf7
|
@ -76,6 +76,7 @@ class Grid(object):
|
|||
enums={}, labels={}, assume_local_times=False, renderers={}, invisible=[],
|
||||
extra_row_class=None, linked_columns=[], url='#',
|
||||
joiners={}, filterable=False, filters={}, use_byte_string_filters=False,
|
||||
searchable={},
|
||||
sortable=False, sorters={}, default_sortkey=None, default_sortdir='asc',
|
||||
pageable=False, default_pagesize=20, default_page=1,
|
||||
checkboxes=False, checked=None, check_handler=None, check_all_handler=None,
|
||||
|
@ -119,6 +120,8 @@ class Grid(object):
|
|||
self.use_byte_string_filters = use_byte_string_filters
|
||||
self.filters = self.make_filters(filters)
|
||||
|
||||
self.searchable = searchable or {}
|
||||
|
||||
self.sortable = sortable
|
||||
self.sorters = self.make_sorters(sorters)
|
||||
self.default_sortkey = default_sortkey
|
||||
|
@ -241,6 +244,15 @@ class Grid(object):
|
|||
kwargs['label'] = self.labels[key]
|
||||
self.filters[key] = self.make_filter(key, *args, **kwargs)
|
||||
|
||||
def set_searchable(self, key, searchable=True):
|
||||
if searchable:
|
||||
self.searchable[key] = True
|
||||
else:
|
||||
self.searchable.pop(key, None)
|
||||
|
||||
def is_searchable(self, key):
|
||||
return self.searchable.get(key, False)
|
||||
|
||||
def remove_filter(self, key):
|
||||
self.filters.pop(key, None)
|
||||
|
||||
|
|
|
@ -187,6 +187,9 @@
|
|||
<b-table-column field="${column['field']}"
|
||||
label="${column['label']}"
|
||||
:sortable="${json.dumps(column['sortable'])}"
|
||||
% if grid.is_searchable(column['field']):
|
||||
searchable
|
||||
% endif
|
||||
:visible="${json.dumps(column['visible'])}">
|
||||
% if grid.is_linked(column['field']):
|
||||
<a :href="props.row._action_url_view" v-html="props.row.${column['field']}"></a>
|
||||
|
@ -217,7 +220,7 @@
|
|||
% endif
|
||||
</template>
|
||||
|
||||
<template slot="empty">
|
||||
<template #empty>
|
||||
<section class="section">
|
||||
<div class="content has-text-grey has-text-centered">
|
||||
<p>
|
||||
|
|
|
@ -105,6 +105,9 @@ class EmailSettingView(MasterView):
|
|||
g.set_link('key')
|
||||
g.set_link('subject')
|
||||
|
||||
g.set_searchable('key')
|
||||
g.set_searchable('subject')
|
||||
|
||||
# to
|
||||
g.set_renderer('to', self.render_to_short)
|
||||
g.sorters['to'] = g.make_simple_sorter('to', foldcase=True)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
################################################################################
|
||||
#
|
||||
# Rattail -- Retail Software Framework
|
||||
# Copyright © 2010-2021 Lance Edgar
|
||||
# Copyright © 2010-2022 Lance Edgar
|
||||
#
|
||||
# This file is part of Rattail.
|
||||
#
|
||||
|
@ -70,6 +70,8 @@ class TableView(MasterView):
|
|||
g.sorters['row_count'] = g.make_simple_sorter('row_count')
|
||||
g.set_sort_defaults('name')
|
||||
|
||||
g.set_searchable('name')
|
||||
|
||||
# TODO: deprecate / remove this
|
||||
TablesView = TableView
|
||||
|
||||
|
|
Loading…
Reference in a new issue