summaryrefslogtreecommitdiff
path: root/ishtar/ishtar_base/widgets.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2011-06-30 14:04:52 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2011-06-30 14:04:52 +0200
commitd66686f332337211929ddb505eeab8eff42cd4e4 (patch)
tree46147e5d07fb8c3d2587c1bc7faf2e0e63e529aa /ishtar/ishtar_base/widgets.py
parent04911d3534c2ee903ddaf4b831c42e70c3d28986 (diff)
downloadIshtar-d66686f332337211929ddb505eeab8eff42cd4e4.tar.bz2
Ishtar-d66686f332337211929ddb505eeab8eff42cd4e4.zip
Manage many to one treatment (refs #499)
Diffstat (limited to 'ishtar/ishtar_base/widgets.py')
-rw-r--r--ishtar/ishtar_base/widgets.py28
1 files changed, 22 insertions, 6 deletions
diff --git a/ishtar/ishtar_base/widgets.py b/ishtar/ishtar_base/widgets.py
index e058f7074..cb257325c 100644
--- a/ishtar/ishtar_base/widgets.py
+++ b/ishtar/ishtar_base/widgets.py
@@ -205,13 +205,14 @@ class JQueryJqGrid(forms.RadioSelect):
]}
def __init__(self, source, form, associated_model, attrs={},
- table_cols='TABLE_COLS', multiple=False):
+ table_cols='TABLE_COLS', multiple=False, multiple_cols=[2]):
self.source = source
self.form = form
self.attrs = attrs
self.associated_model = associated_model
self.table_cols = table_cols
self.multiple = multiple
+ self.multiple_cols = multiple_cols
def render(self, name, value=None, attrs=None):
t = loader.get_template('form_snippet.html')
@@ -259,11 +260,12 @@ class JQueryJqGrid(forms.RadioSelect):
dct = {'name':name, 'col_names':col_names, 'extra_cols':extra_cols,
'source':unicode(self.source), 'col_idx':col_idx,
'no_result':unicode(_("No results")), 'loading':unicode(_("Loading...")),
- 'remove':unicode(_("Remove")), 'sname':name.replace('-', '')}
-
+ 'remove':unicode(_(u"Remove")), 'sname':name.replace('-', ''),
+ 'multi_cols': ",".join((u'"%d"' % col for col in self.multiple_cols))}
rendered += """
<script type="text/javascript">
var query_vars = new Array(%(col_idx)s);
+var selItems_%(sname)s = new Array();
jQuery(document).ready(function(){
jQuery("#search_%(name)s").click(function (){
var data = "";
@@ -307,11 +309,22 @@ jQuery(document).ready(function(){
""" % dct
if self.multiple:
rendered += """
- var selItems_%(sname)s = new Array();
jQuery("#add_button_%(name)s").click(function (){
var mygrid = jQuery("#grid_%(name)s");
var idx = mygrid.getGridParam('selrow');
- var label = mygrid.getCell(idx, 2);
+ var lbl_cols = new Array(%(multi_cols)s);
+ var label = "";
+ for (var id in lbl_cols){
+ if(id == 1){
+ label += " (";
+ }else if (id > 1){
+ label += " ; ";
+ }
+ label += mygrid.getCell(idx, lbl_cols[id]);
+ }
+ if (id > 0){
+ label += ")";
+ }
for (id in selItems_%(sname)s){
if(selItems_%(sname)s[id] == idx){
return false;
@@ -319,7 +332,10 @@ jQuery(document).ready(function(){
}
selItems_%(sname)s.push(idx);
jQuery("#selectmulti_%(name)s").append(
- "<li id='selected_%(name)s_"+idx+"'>"+label+" <a href='#' class='remove' onclick=\\"multiRemoveItem('selItems_%(sname)s', '%(name)s', "+ idx +");return false;\\">%(remove)s</a></li>");
+ "<li id='selected_%(name)s_"+idx+"'>\
+<a href='#' class='remove' \
+ onclick=\\"multiRemoveItem(selItems_%(sname)s, '%(name)s', "+ idx +");\
+ return false;\\" title=\\"%(remove)s\\">X</a>" + label + "</li>");
return true;
});
jQuery("#submit_form").click(function (){