[CLEAN] web: cleaned priority widget implementation: cleaned xml / js code
authorThibault Delavallée <tde@openerp.com>
Thu, 8 May 2014 14:05:45 +0000 (16:05 +0200)
committerThibault Delavallée <tde@openerp.com>
Thu, 8 May 2014 14:05:45 +0000 (16:05 +0200)
bzr revid: tde@openerp.com-20140508140545-kkogxe1dhbh7ryrk

addons/web/static/src/js/view_form.js
addons/web/static/src/xml/base.xml
addons/web_kanban/static/src/js/kanban.js

index 54c8535..11dffac 100644 (file)
@@ -2420,28 +2420,27 @@ instance.web.form.Priority = instance.web.form.FieldChar.extend({
         this._super(field_manager, node);
     },
     prepare_priority: function() {
-        var data = [];
+        var self = this;
         var selection = this.field.selection || [];
-        _.map(selection, function(res) {
-            value = {
-                'name': res[0],
-                'legend_name': res[1]
+        var init_value = selection && selection[0][0] || 0;
+        var data = _.map(selection.slice(1), function(element, index) {
+            var value = {
+                'value': element[0],
+                'name': element[1],
+                'click_value': element[0],
             }
-            if (res[0] == '0') {
-                value['legend']= '<span class="oe_e oe_star_off">7</span>';
-            } else {
-                value['legend']= '<span class="oe_e oe_star_on">7</span>';
+            if (index == 0 && self.get('value') == element[0]) {
+                value['click_value'] = init_value;
             }
-            data.push(value)
+            return value;
         });
         return data;
     },
     render_value: function() {
         var self = this;
-        var data = {'widget': self }
-        self.record_id =  self.view.datarecord.id;
-        data['legends'] = self.prepare_priority();
-        this.$el.html(QWeb.render("Priority", data));
+        this.record_id = self.view.datarecord.id;
+        this.priorities = self.prepare_priority();
+        this.$el.html(QWeb.render("Priority", {'widget': this}));
         this.$el.find('.oe_legend').click(self.do_action.bind(self));
     },
     do_action: function(e) {
@@ -2449,14 +2448,7 @@ instance.web.form.Priority = instance.web.form.FieldChar.extend({
         var li = $(e.target).closest( "li" );
         if (li.length) {
             var value = {};
-            if (self.val == li.data('value') && self.check_star) {
-                value[self.name] = String(li.data('value') - 1);
-                self.check_star = false
-            } else {
-                value[self.name] = String(li.data('value'));
-                self.check_star = true;
-            }
-            self.val = li.data('value')
+            value[self.name] = String(li.data('value'));
             if (self.record_id) {
                 return self.view.dataset._model.call('write', [[self.record_id], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self));
             } else {
index b91f7ea..ff56f6f 100644 (file)
         <t t-foreach="widget.states" t-as="rec">
             <a t-if="widget.get('value') === rec.name">
                 <a class="oe_legend dropdown-toggle" data-toggle="dropdown">
-                    <!-- <img height="16" width="16" t-att-src="'/web/static/src/img/icons/' + rec.icon_name"/> -->
                     <span t-att-class="rec.state_class" t-if="widget.get('value') === rec.name" t-att-title="rec.tooltip"/>
                     <span class="sr-only">Toggle Dropdown</span>
                 </a>
                 <t t-if="widget.get('value') !== rec.name">
                     <li class="oe_legend" t-att-data-value="rec.name" ><a href="#">
                         <span t-att-class="rec.state_class" t-att-title="rec.tooltip"/>
-                        <!-- <img height="16" width="16" t-att-src="'/web/static/src/img/icons/' + rec.icon_name"/> -->
                         <t t-raw="rec.state_name" /></a>
                     </li>
                 </t>
 </t>
 <t t-name="Priority">
     <ul style="list-style: none; padding-left: 2px;">
-        <t t-foreach="legends" t-as="rec" >
-            <t t-if="widget.get('value') gte rec.name and !rec_first">
-                <li t-att-data-value="rec.name" class="pull-left oe_legend"><a href="#" t-att-title="rec.legend_name"><t t-raw="rec.legend"/></a></li>
-            </t>
-        </t>
-        <t t-foreach="legends" t-as="rec" >
-            <t t-if="widget.get('value') lt rec.name">
-                <li t-att-data-value="rec.name" class="pull-left oe_legend"><a href="#" t-att-title="rec.legend_name"><t t-raw="legends[0].legend"/></a></li>
-            </t>
+        <t t-foreach="widget.priorities" t-as="rec" >
+            <li t-att-data-value="rec.click_value" class="pull-left oe_legend">
+                <a href="#" t-att-title="rec.name">
+                    <span t-att-class="widget.get('value') gte rec.value and 'oe_e oe_star_on' or 'oe_e oe_star_off'">7</span>
+                </a>
+            </li>
         </t>
     </ul>
 </t>
index 3c12231..ffb4d5c 100644 (file)
@@ -1266,28 +1266,27 @@ instance.web_kanban.Priority = instance.web_kanban.AbstractField.extend({
         this.parent = parent;
     },
     prepare_priority: function() {
-        var data = [];
+        var self = this;
         var selection = this.field.selection || [];
-        _.map(selection, function(res) {  
-            value = {
-                'name': res[0],
-                'legend_name': res[1]
+        var init_value = selection && selection[0][0] || 0;
+        var data = _.map(selection.slice(1), function(element, index) {
+            var value = {
+                'value': element[0],
+                'name': element[1],
+                'click_value': element[0],
             }
-            if (res[0] == '0') {
-                value['legend'] = '<span class="oe_e oe_star_off">7</span>';
-            } else {
-                value['legend'] = '<span class="oe_e oe_star_on">7</span>';
+            if (index == 0 && self.get('value') == element[0]) {
+                value['click_value'] = init_value;
             }
-            data.push(value)
+            return value;
         });
         return data;
     },
     renderElement: function() {
         var self = this;
-        self.record_id = self.parent.id;
-        var data = {'widget': self }
-        data['legends'] = self.prepare_priority();
-        this.$el = $(QWeb.render("Priority", data));
+        this.record_id = self.parent.id;
+        this.priorities = self.prepare_priority();
+        this.$el = $(QWeb.render("Priority", {'widget': this}));
         this.$el.find('.oe_legend').click(self.do_action.bind(self));
     },
     do_action: function(e) {
@@ -1295,14 +1294,7 @@ instance.web_kanban.Priority = instance.web_kanban.AbstractField.extend({
         var li = $(e.target).closest( "li" );
         if (li.length) {
             var value = {};
-            if (self.parent.val == li.data('value') && self.parent.check_star) {
-                value[self.name] = String(li.data('value') - 1);
-                self.parent.check_star = false
-            } else {
-                value[self.name] = String(li.data('value'));
-                self.parent.check_star = true;
-            }
-            self.parent.val = li.data('value')
+            value[self.name] = String(li.data('value'));
             return self.parent.view.dataset._model.call('write', [[self.record_id], value, self.parent.view.dataset.get_context()]).done(self.reload_record.bind(self.parent));
         }
     },