[IMP] remove bunch of crummy padding-fiddling JS, replace with slightly less crummy...
authorXavier Morel <xmo@openerp.com>
Tue, 9 Aug 2011 11:25:27 +0000 (13:25 +0200)
committerXavier Morel <xmo@openerp.com>
Tue, 9 Aug 2011 11:25:27 +0000 (13:25 +0200)
bzr revid: xmo@openerp.com-20110809112527-tb4ycvd6d254duvn

addons/base/static/src/css/base.css
addons/base/static/src/js/tree.js
addons/base/static/src/xml/base.xml

index 1eef822..378c648 100644 (file)
@@ -1076,22 +1076,18 @@ background: linear-gradient(top, #ffffff 0%,#ebe9e9 100%); /* W3C */
     font-size: 1.2em;
     font-weight: bold;
 }
-.mouse-over {
-    color: #0000FF;
-}
-.treeview-tr {
+.treeview-tr, .treeview-td {
     cursor: pointer;
-    text-align: left;
     vertical-align: top;
-}
-.treeview-td {
     text-align: left;
-    vertical-align: top;
-    padding-left: 15px;
 }
+.treeview-td:first-of-type span {
+    padding-left: 21px;
+}
+
 .treeview-header {
     text-align: left;
-    padding-left: 15px;
+    padding-left: 21px;
     font-weight: bold;
     vertical-align: top;
-}
\ No newline at end of file
+}
index 870a235..b82954d 100644 (file)
@@ -71,7 +71,9 @@ openerp.base.TreeView = openerp.base.View.extend({
 
         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 () {
@@ -122,7 +124,7 @@ openerp.base.TreeView = openerp.base.View.extend({
         });
     },
     // 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) {
@@ -130,80 +132,24 @@ openerp.base.TreeView = openerp.base.View.extend({
                 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();
index 9517c8d..dbbc983 100644 (file)
     <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>