this.dataset.read_slice(this.fields_list(), 0, false, function (records) {
self.$element.html(QWeb.render('TreeView', {
- 'title': self.fields_view.arch.attrs.string
+ 'title': self.fields_view.arch.attrs.string,
+ 'fields_view': self.fields_view.arch.children,
+ 'fields': self.fields
}));
var $select = self.$element.find('select')
.change(function () {
});
},
// get child data of selected value
- getdata: function (id, children_ids, flag) {
+ getdata: function (id, children_ids) {
var self = this;
self.dataset.read_ids(children_ids, this.fields_list(), function (records) {
self.records[record.id] = record;
});
- var is_padding, row_id;
- var curr_node = $('tr #treerow_' + id);
-
- if (curr_node.length == 1) {
- curr_node.find('td:first').children(':first-child').attr('src','/base/static/src/img/collapse.gif');
- curr_node.after(QWeb.render('TreeView.rows', {
- 'records': records,
- 'children_field': self.children_field,
- 'fields_view' : self.fields_view.arch.children,
- 'field' : self.fields
- }));
-
-
- for (var i = 0; i < records.length; i++) {
- row_id = $('tr #treerow_' + records[i].id);
-
- if (row_id && row_id.find('td:first').children(':first-child').attr('id') == 'parentimg_' + records[i].id) {
- row_id.find('td:first').append('<span>'+row_id.find('td:eq(1)').text()+'</span>');
- row_id.find('td:eq(1)').remove();
- is_padding = true;
- }
- }
-
- var padding = curr_node.find('td').css('paddingLeft');
- var padd = parseInt(padding.replace('px',''), 10);
- var fixpadding;
+ var $curr_node = self.$element.find('#treerow_' + id);
+ var children_rows = QWeb.render('TreeView.rows', {
+ 'records': records,
+ 'children_field': self.children_field,
+ 'fields_view': self.fields_view.arch.children,
+ 'field': self.fields,
+ 'level': $curr_node.data('level') || 0
+ });
- for (var i = 0; i < records.length; i++) {
- row_id = $('tr #treerow_' + records[i].id);
- if (row_id) {
- if (!is_padding) {
- fixpadding = padd + 40;
- row_id.find('td:first').css('paddingLeft', fixpadding);
- } else {
- if (padd == 1) {
- fixpadding = padd + 17;
- } else {
- fixpadding = padd + 20;
- }
- var curr_node_elem = row_id.find('td:first');
- curr_node_elem.children(':first-child').addClass("parent_top");
- if (curr_node_elem.children(':first-child').attr('id') == "parentimg_" + records[i].id) {
- curr_node_elem.css('paddingLeft', fixpadding );
- } else {
- curr_node_elem.css('paddingLeft', (fixpadding + 20));
- }
- }
- }
- }
+ if ($curr_node.length) {
+ $curr_node.find('td:first > :first-child').attr('src','/base/static/src/img/collapse.gif');
+ $curr_node.after(children_rows);
} else {
- if (!flag) {
- self.$element.find('table').remove();
- }
- self.$element.append(QWeb.render('TreeView.architecture', {
- 'records': records,
- 'children_field': self.children_field,
- 'fields_view': self.fields_view.arch.children,
- 'fields': self.fields
- }));
-
- self.$element.find('tr[id ^= treerow_]').each( function() {
- if ($(this).find('td:first').children(':first-child').attr('id')) {
- $(this).find('td:first').append('<span>' + $(this).find('td:eq(1)').text() + '</span>');
- $(this).find('td:eq(1)').remove();
- }
- $(this).find('td').children(':first-child').addClass("parent_top");
- if (!($(this).find('td').children(':first-child').attr('id'))) {
- $(this).find('td:first').css('paddingLeft', '20px');
- }
- });
+ self.$element.find('tbody').html(children_rows);
}
- self.$element.find('tr[id ^= treerow_]').find('td').children(':last-child').click( function(e) {
- row_id = $(this).parent().parent().attr('id');
+ self.$element.find('tr[id ^= treerow_] td > :last-child').click( function(e) {
+ var row_id = $(this).parent().parent().attr('id');
var record_id = row_id.split('_')[1];
self.showrecord(record_id, self.model);
e.stopImmediatePropagation();
<h2 class="oe_view_title"><t t-esc="title"/></h2>
<select name="parent" style="width: 30%">
</select>
+ <table>
+ <thead>
+ <tr>
+ <th t-foreach="fields_view" t-as="field"
+ t-if="!field.attrs.modifiers.tree_invisible"
+ class="treeview-header">
+ <t t-esc="fields[field.attrs.name].string" />
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ </tbody>
+ </table>
</t>
-<table t-name="TreeView.architecture">
- <thead>
- <tr>
- <th t-foreach="fields_view" t-as="field"
- t-if="!field.attrs.modifiers.tree_invisible"
- class="treeview-header">
- <t t-esc="fields[field.attrs.name].string" />
- </th>
- </tr>
- </thead>
- <tbody>
- <t t-call="TreeView.rows"/>
- </tbody>
-</table>
<tr t-name="TreeView.rows"
t-foreach="records" t-as="record"
- t-att-id="'treerow_' + record.id">
+ t-att-id="'treerow_' + record.id"
+ t-att-data-level="level + 1">
<t t-set="children" t-value="record[children_field]"/>
- <td t-if="children and children.length"
- class="treeview-tr">
- <img t-att-id="'parentimg_' + record.id"
+ <t t-set="has_children" t-value="children and children.length"/>
+
+ <td t-foreach="fields_view" t-as="field"
+ t-if="!field.attrs.modifiers.tree_invisible"
+ t-att-style="!field_index ? 'padding-left: ' + 19*level + 'px' : undefined"
+ t-att-class="!field_index and has_children ? 'treeview-tr' : 'treeview-td'">
+ <img t-if="!field_index and has_children"
+ t-att-id="'parentimg_' + record.id"
t-att-data-id="record.id"
src="/base/static/src/img/expand.gif"
width="16" height="16" border="0"/>
- </td>
- <td t-foreach="fields_view" t-as="field"
- t-if="!field.attrs.modifiers.tree_invisible"
- class="treeview-td">
<span t-if="!field.attrs.modifiers.invisible">
<t t-esc="record[field.attrs.name]" />
</span>