[WIP] Layout with computing
bzr revid: fme@openerp.com-20120315193245-8w8xm41a2dignrt2
This commit is contained in:
parent
cc48043fd2
commit
6eb1f39dfa
|
@ -770,7 +770,8 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
|
||||||
var name = $field.attr('name'),
|
var name = $field.attr('name'),
|
||||||
field_orm = this.fvg.fields[name],
|
field_orm = this.fvg.fields[name],
|
||||||
field_string = $field.attr('string') || field_orm.string || '',
|
field_string = $field.attr('string') || field_orm.string || '',
|
||||||
field_help = $field.attr('help') || field_orm.help || '';
|
field_help = $field.attr('help') || field_orm.help || '',
|
||||||
|
field_colspan = parseInt($field.attr('colspan'), 10);
|
||||||
|
|
||||||
if (!field_orm) {
|
if (!field_orm) {
|
||||||
throw new Error("Field '" + name + "' specified in view could not be found.");
|
throw new Error("Field '" + name + "' specified in view could not be found.");
|
||||||
|
@ -786,6 +787,9 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
|
||||||
'string' : field_string,
|
'string' : field_string,
|
||||||
'help' : field_help
|
'help' : field_help
|
||||||
}).insertBefore($field).text();
|
}).insertBefore($field).text();
|
||||||
|
if (field_colspan > 1) {
|
||||||
|
$field.attr('colspan', field_colspan - 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$field.attr({
|
$field.attr({
|
||||||
|
@ -795,8 +799,9 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
process_group: function($group, $form) {
|
process_group: function($group, $form) {
|
||||||
var $new_group = $(QWeb.render('FormRenderingGroup', $group.getAttributes()));
|
var self = this,
|
||||||
var $table;
|
$new_group = $(QWeb.render('FormRenderingGroup', $group.getAttributes())),
|
||||||
|
$table;
|
||||||
if ($new_group.is('table')) {
|
if ($new_group.is('table')) {
|
||||||
$table = $new_group;
|
$table = $new_group;
|
||||||
} else {
|
} else {
|
||||||
|
@ -812,23 +817,57 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
|
||||||
colspan = parseInt($child.attr('colspan') || 1, 10),
|
colspan = parseInt($child.attr('colspan') || 1, 10),
|
||||||
tagName = $child[0].tagName.toLowerCase();
|
tagName = $child[0].tagName.toLowerCase();
|
||||||
if (tagName === 'newline') {
|
if (tagName === 'newline') {
|
||||||
|
self.compute_width($tr, cols);
|
||||||
$tr = null;
|
$tr = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!$tr || row_cols < colspan) {
|
if (!$tr || row_cols < colspan) {
|
||||||
|
if (row_cols < colspan) {
|
||||||
|
self.compute_width($tr, cols);
|
||||||
|
}
|
||||||
$tr = $('<tr/>').addClass('oe_form_group_row').appendTo($table);
|
$tr = $('<tr/>').addClass('oe_form_group_row').appendTo($table);
|
||||||
row_cols = cols;
|
row_cols = cols;
|
||||||
}
|
}
|
||||||
row_cols -= colspan;
|
row_cols -= colspan;
|
||||||
var $td = $('<td/>').addClass('oe_form_group_cell').attr('colspan', colspan);
|
var $td = $('<td/>').addClass('oe_form_group_cell').attr('colspan', colspan);
|
||||||
if (tagName === 'separator' && $child.attr('orientation') === 'vertical') {
|
|
||||||
$td.addClass('oe_vertical_separator').attr('width', '1');
|
|
||||||
$child = null;
|
|
||||||
}
|
|
||||||
$tr.append($td.append($child));
|
$tr.append($td.append($child));
|
||||||
});
|
});
|
||||||
$group.before($new_group).remove();
|
$group.before($new_group).remove();
|
||||||
},
|
},
|
||||||
|
compute_width: function($tr, cols) {
|
||||||
|
if ($tr) {
|
||||||
|
var to_compute = [],
|
||||||
|
total = 100;
|
||||||
|
$tr.children().each(function() {
|
||||||
|
var $td = $(this),
|
||||||
|
$child = $td.children(':first');
|
||||||
|
switch ($child[0].tagName.toLowerCase()) {
|
||||||
|
case 'separator':
|
||||||
|
if ($child.attr('orientation') === 'vertical') {
|
||||||
|
$td.addClass('oe_vertical_separator').attr('width', '1');
|
||||||
|
$td.empty();
|
||||||
|
cols--;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'label':
|
||||||
|
if ($child.attr('for')) {
|
||||||
|
$td.attr('width', '1%');
|
||||||
|
cols--;
|
||||||
|
total--;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
to_compute.push($td);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var unit = Math.floor(total / cols);
|
||||||
|
_.each(to_compute, function($td, i) {
|
||||||
|
var width = parseInt($td.attr('colspan'), 10) * unit;
|
||||||
|
$td.attr('width', ((i == to_compute.length - 1) ? total : width) + '%');
|
||||||
|
total -= width;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
process_notebook: function($notebook, $form) {
|
process_notebook: function($notebook, $form) {
|
||||||
var pages = [];
|
var pages = [];
|
||||||
$notebook.find('> page').each(function() {
|
$notebook.find('> page').each(function() {
|
||||||
|
|
Loading…
Reference in New Issue