Skip to content
Snippets Groups Projects
Commit d1839542 authored by LE GAC Renaud's avatar LE GAC Renaud
Browse files

New method link_comboboxes in FormModifier.

parent 97becb09
No related branches found
No related tags found
No related merge requests found
......@@ -18,42 +18,4 @@ fieldsModifier.merge_fields('first_page',
fieldsModifier.merge_fields('conference_start',
'conference_end',
fieldLabel=T('Dates'),
defaults={'flex': 1})
#
# foo1 selector
#
fieldsModifier = dbui.FieldsModifier('foo1')
fieldsModifier.configure_field('my_axis',
displayField='axis_local',
role='master',
store='axesStore',
valueField='axis',
xtype='xlinkedcombobox')
fieldsModifier.configure_field('my_granularity',
displayField='granularity_local',
mode='local',
role='slave',
store='axesStore',
valueField='granularity',
xtype='xlinkedcombobox')
#
# harvesters
#
fieldsModifier = dbui.FieldsModifier('harvester_selector')
fieldsModifier.configure_field('id_projects',
displayField='ProjectsProject',
role='master',
store='harvestersStore',
valueField='HarvestersId_projects',
xtype='xlinkedcombobox')
fieldsModifier.configure_field('controller',
displayField='HarvestersController',
mode='local',
role='slave',
store='harvestersStore',
valueField='HarvestersController',
xtype='xlinkedcombobox')
defaults={'flex': 1})
\ No newline at end of file
......@@ -7,6 +7,30 @@
#
dbui.configure_forms(db, plugins=['pFormToolTip'])
#
# link comboboxes in foo1 selector
#
formModifier = dbui.FormModifier('foo1')
formModifier.link_comboboxes(masterName='my_axis',
slaveName='my_granularity',
storeName='axesStore',
displayFieldMaster='axis_local',
valueFieldMaster='axis',
displayFieldSlave='granularity_local',
valueFieldSlave='granularity')
#
# link comboboxes in harvester selector
#
formModifier = dbui.FormModifier('harvester_selector')
formModifier.link_comboboxes(masterName='id_projects',
slaveName='controller',
storeName='harvestersStore',
displayFieldMaster='ProjectsProject',
valueFieldMaster='HarvestersId_projects',
displayFieldSlave='HarvestersController',
valueFieldSlave='HarvestersController')
#
# Create fieldSet for the publication form
#
......@@ -49,7 +73,7 @@ formModifier.merge_fields('authors_cppm',
#
# Organize fieldSet within a TabPanel embedded in the publication form
# Organise fieldSet within a TabPanel embedded in the publication form
#
formModifier.set_mapper(dbui.map_tabpanel)
......
......@@ -3,6 +3,7 @@
"""
import copy
from fieldsmodifier import FieldsModifier
from gluon.storage import Storage
from modifier import Modifier
......@@ -26,12 +27,12 @@ def configure_forms(db, **extjs):
class FormModifier(Modifier):
"""Helper tool to customize the form widget associated to a table.
"""Helper tool to customise the form widget associated to a table.
"""
def __init__(self, tablename):
"""Initialize the modifier persistent data.
"""Initialise the modifier persistent data.
"""
Modifier.__init__(self, MODIFIER_FORMS, tablename)
......@@ -39,7 +40,76 @@ class FormModifier(Modifier):
self.data.field_sets = []
self.data.hidden_fields = []
self.data.mapper = None
self.tablename = tablename
def link_comboboxes(self, **kwargs):
"""Link to Ext.form.ComboBox of the form in such a way that
the value available for the second depend on the value selected
in the first one. This first field is the master while the second one
is the slave.
This method modify deeply the field configuration transforming
the Ext.form.comboBox into App.form.LinkedComboBox.
The two comboboxes are linked to a common table and will display
value of field in that table, including foreign fields.
The table can be the one selected in the constructor or another
one. The latter case is useful when working with selector.
All keyword arguments of this method have to be defined:
masterName
field name for the master combobox
slaveName
field name for the master combobox
storeName
name of the store containing values
which will be displayed in the master and slave
combobox. Either mystoreStore for and Ext.data.ArrayStore
or tableStore for a store linked to a database table.
displayFieldMaster
Name of the field in the store shown in the master combo.
Either field for Ext.data.ArrayStore or TableField
for a store linked to a database table.
valueFieldMaster
Name of the field in the store return by the master combo.
Either field for Ext.data.ArrayStore or TableField
for a store linked to a database table.
displayFieldSlave
Name of the field in the store display in the slave combo.
Either field for Ext.data.ArrayStore or TableField
for a store linked to a database table.
valueFieldSlave
Name of the field in the store return by the slave combo.
Either field for Ext.data.ArrayStore or TableField
for a store linked to a database table.
"""
fieldsModifier = FieldsModifier(self.tablename)
fieldsModifier.configure_field(kwargs['masterName'],
displayField=kwargs['displayFieldMaster'],
role='master',
store=kwargs['storeName'],
valueField=kwargs['valueFieldMaster'],
xtype='xlinkedcombobox')
fieldsModifier.configure_field(kwargs['slaveName'],
displayField=kwargs['displayFieldSlave'],
mode='local',
role='slave',
store=kwargs['storeName'],
valueField=kwargs['valueFieldSlave'],
xtype='xlinkedcombobox')
def merge_fields(self, *fields, **kwargs):
"""Merge fields in a field set corresponding to
......
--------------------------------- CHANGE LOG ----------------------------------
HEAD
- New controller plugin_dbui/versions
- New controller plugin_dbui/versions.
- New method link_comboboxes in FormModifier.
0.4.9.3 (Oct 2012)
- New syntax for grid filter via the method GridModifier.append_filter.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment