fix: add "centered" flag for grid columns
This commit is contained in:
parent
356eb21713
commit
4307b5a9eb
3 changed files with 72 additions and 0 deletions
|
|
@ -123,6 +123,12 @@ class Grid: # pylint: disable=too-many-instance-attributes,too-many-public-meth
|
||||||
|
|
||||||
See also :meth:`get_label()` and :meth:`set_label()`.
|
See also :meth:`get_label()` and :meth:`set_label()`.
|
||||||
|
|
||||||
|
.. attribute:: centered
|
||||||
|
|
||||||
|
Dict of column "centered" flags.
|
||||||
|
|
||||||
|
See also :meth:`is_centered()` and :meth:`set_centered()`.
|
||||||
|
|
||||||
.. attribute:: renderers
|
.. attribute:: renderers
|
||||||
|
|
||||||
Dict of column (cell) value renderer overrides.
|
Dict of column (cell) value renderer overrides.
|
||||||
|
|
@ -397,6 +403,7 @@ class Grid: # pylint: disable=too-many-instance-attributes,too-many-public-meth
|
||||||
columns=None,
|
columns=None,
|
||||||
data=None,
|
data=None,
|
||||||
labels=None,
|
labels=None,
|
||||||
|
centered=None,
|
||||||
renderers=None,
|
renderers=None,
|
||||||
enums=None,
|
enums=None,
|
||||||
checkable=False,
|
checkable=False,
|
||||||
|
|
@ -438,6 +445,7 @@ class Grid: # pylint: disable=too-many-instance-attributes,too-many-public-meth
|
||||||
self.app = self.config.get_app()
|
self.app = self.config.get_app()
|
||||||
|
|
||||||
self.set_columns(columns or self.get_columns())
|
self.set_columns(columns or self.get_columns())
|
||||||
|
self.centered = centered or {}
|
||||||
self.renderers = {}
|
self.renderers = {}
|
||||||
if renderers:
|
if renderers:
|
||||||
for k, val in renderers.items():
|
for k, val in renderers.items():
|
||||||
|
|
@ -650,6 +658,32 @@ class Grid: # pylint: disable=too-many-instance-attributes,too-many-public-meth
|
||||||
return self.labels[key]
|
return self.labels[key]
|
||||||
return self.app.make_title(key)
|
return self.app.make_title(key)
|
||||||
|
|
||||||
|
def set_centered(self, key, centered=True):
|
||||||
|
"""
|
||||||
|
Set/override the "centered" flag for a column.
|
||||||
|
|
||||||
|
:param key: Name of column.
|
||||||
|
|
||||||
|
:param centered: Whether the column data should be centered.
|
||||||
|
|
||||||
|
See also :meth:`is_centered()`. Column flags are tracked via
|
||||||
|
:attr:`centered`.
|
||||||
|
"""
|
||||||
|
self.centered[key] = centered
|
||||||
|
|
||||||
|
def is_centered(self, key):
|
||||||
|
"""
|
||||||
|
Check if the given column should be centered.
|
||||||
|
|
||||||
|
:param key: Name of column.
|
||||||
|
|
||||||
|
:rtype: boolean
|
||||||
|
|
||||||
|
See also :meth:`set_centered()`. Column flags are tracked via
|
||||||
|
:attr:`centered`.
|
||||||
|
"""
|
||||||
|
return self.centered.get(key, False)
|
||||||
|
|
||||||
def set_renderer(self, key, renderer, **kwargs):
|
def set_renderer(self, key, renderer, **kwargs):
|
||||||
"""
|
"""
|
||||||
Set/override the value renderer for a column.
|
Set/override the value renderer for a column.
|
||||||
|
|
|
||||||
|
|
@ -169,6 +169,9 @@
|
||||||
<${b}-table-column field="${column['field']}"
|
<${b}-table-column field="${column['field']}"
|
||||||
label="${column['label']}"
|
label="${column['label']}"
|
||||||
v-slot="props"
|
v-slot="props"
|
||||||
|
% if grid.is_centered(column['field']):
|
||||||
|
centered
|
||||||
|
% endif
|
||||||
:sortable="${json.dumps(column.get('sortable', False))|n}"
|
:sortable="${json.dumps(column.get('sortable', False))|n}"
|
||||||
:searchable="${json.dumps(column.get('searchable', False))|n}"
|
:searchable="${json.dumps(column.get('searchable', False))|n}"
|
||||||
cell-class="c_${column['field']}">
|
cell-class="c_${column['field']}">
|
||||||
|
|
|
||||||
|
|
@ -219,6 +219,41 @@ class TestGrid(WebTestCase):
|
||||||
grid.set_label("foo", "Different")
|
grid.set_label("foo", "Different")
|
||||||
self.assertEqual(grid.get_label("foo"), "Different")
|
self.assertEqual(grid.get_label("foo"), "Different")
|
||||||
|
|
||||||
|
def test_set_centered(self):
|
||||||
|
model = self.app.model
|
||||||
|
|
||||||
|
grid = self.make_grid(model_class=model.Setting)
|
||||||
|
self.assertEqual(grid.centered, {})
|
||||||
|
|
||||||
|
# set flag
|
||||||
|
grid.set_centered("name")
|
||||||
|
self.assertIn("name", grid.centered)
|
||||||
|
self.assertTrue(grid.centered["name"])
|
||||||
|
|
||||||
|
# clear flag
|
||||||
|
grid.set_centered("name", False)
|
||||||
|
self.assertIn("name", grid.centered)
|
||||||
|
self.assertFalse(grid.centered["name"])
|
||||||
|
|
||||||
|
def test_is_centered(self):
|
||||||
|
model = self.app.model
|
||||||
|
|
||||||
|
grid = self.make_grid(model_class=model.Setting)
|
||||||
|
self.assertEqual(grid.centered, {})
|
||||||
|
self.assertFalse(grid.is_centered("name"))
|
||||||
|
|
||||||
|
# set flag
|
||||||
|
grid.set_centered("name")
|
||||||
|
self.assertIn("name", grid.centered)
|
||||||
|
self.assertTrue(grid.centered["name"])
|
||||||
|
self.assertTrue(grid.is_centered("name"))
|
||||||
|
|
||||||
|
# clear flag
|
||||||
|
grid.set_centered("name", False)
|
||||||
|
self.assertIn("name", grid.centered)
|
||||||
|
self.assertFalse(grid.centered["name"])
|
||||||
|
self.assertFalse(grid.is_centered("name"))
|
||||||
|
|
||||||
def test_set_renderer(self):
|
def test_set_renderer(self):
|
||||||
grid = self.make_grid(columns=["foo", "bar"])
|
grid = self.make_grid(columns=["foo", "bar"])
|
||||||
self.assertEqual(grid.renderers, {})
|
self.assertEqual(grid.renderers, {})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue