summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorMahendra Barad (OpenERP) <mba@tinyerp.com>2014-02-19 18:58:51 +0530
committerMahendra Barad (OpenERP) <mba@tinyerp.com>2014-02-19 18:58:51 +0530
commitfd4b54a9cfedcbffa08c10494cac3a8a8db6760b (patch)
treeca16507105ed481978b8eee641e092c55cf32a0f /addons/web/static/src
parent2c0141bace94473ef015ea8ff57cd3ecdc829acd (diff)
[IMP]create four different widget for priority and dropdown_select for kanban and form view
bzr revid: mba@tinyerp.com-20140219132851-vyynhi29hla4k5ly
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/view_form.js110
-rw-r--r--addons/web/static/src/xml/base.xml16
2 files changed, 67 insertions, 59 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index c10e2b56d27..fd237da6e7d 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -2331,20 +2331,53 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(instance.we
}
});
-instance.web.Legend = instance.web.Widget.extend({
- init: function (parent, dataset) {
- this._super(parent);
- this.parent = parent;
- this.dataset = dataset;
+instance.web.form.dropdown_selection = instance.web.form.FieldChar.extend({
+ init: function (field_manager, node) {
+ this._super(field_manager, node);
+ },
+ prepare_dropdown_selection: function(){
+ return [{ 'name': 'normal', 'state_name': ' In Progress', 'state_class': 'btn-default' },
+ { 'name': 'blocked', 'state_name': ' Blocked', 'state_class': 'btn-danger' },
+ { 'name': 'done', 'state_name': ' Ready', 'state_class': 'btn-success' }]
+ },
+ render_value: function() {
+ var self = this;
+ var data = {'widget': self }
+ self.record_id = self.view.datarecord.id;
+ data['states'] = self.prepare_dropdown_selection();
+ var content = QWeb.render("dropdown_selection", data);
+ this.$el.html(content);
+ this.$el.find('.oe_legend').click(self.do_action.bind(self));
+ },
+ do_action: function(e){
+ var self = this;
+ var li = $(e.target).closest( "li" );
+ if (li.length){
+ var 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 {
+ return self.view.on_button_save().done(function(result) {
+ if (result) {
+ self.view.dataset._model.call('write', [[result], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self));
+ }
+ });
+ }
+ }
+ },
+ reload_record: function(){
+ this.view.reload();
},
- prepare_kanban_state_legend: function(){
- return [{ 'name': 'normal', 'legend_name': ' In Progress', 'legend_class': 'btn-default' },
- { 'name': 'blocked', 'legend_name': ' Blocked', 'legend_class': 'btn-danger' },
- { 'name': 'done', 'legend_name': ' Ready', 'legend_class': 'btn-success' }]
+});
+
+instance.web.form.priority = instance.web.form.FieldChar.extend({
+ init: function (field_manager, node) {
+ this._super(field_manager, node);
},
- prepare_priority_legend: function(){
+ prepare_priority: function(){
var data = [];
- var selection = this.parent.field.selection || [];
+ var selection = this.field.selection || [];
_.map(selection, function(res){
value = {
'name': res[0],
@@ -2360,62 +2393,37 @@ instance.web.Legend = instance.web.Widget.extend({
});
return data;
},
- prepare_data: function() {
- var self =this;
- if (this.parent.name == 'kanban_state'){
- return self.prepare_kanban_state_legend();
- }
- if (this.parent.name == 'priority'){
- return self.prepare_priority_legend();
- }
- },
- render_value: function(record_id, data) {
+ render_value: function() {
var self = this;
- self.record_id = record_id;
- var legend = this.prepare_data();
- data['legends'] = legend;
- var content = QWeb.render("Legend."+ self.parent.name, data);
- if (data.view_mode === 'form')
- this.parent.$el.html(content);
- else
- this.parent.$el = $(content);
- this.parent.$el.find('.oe_legend').click(self.do_action.bind(self));
+ var data = {'widget': self }
+ self.record_id = self.view.datarecord.id;
+ data['legends'] = self.prepare_priority();
+ var content = QWeb.render("priority", data);
+ this.$el.html(content);
+ this.$el.find('.oe_legend').click(self.do_action.bind(self));
},
do_action: function(e){
var self = this;
var li = $(e.target).closest( "li" );
if (li.length){
var value = {};
- value[self.parent.name] = String(li.data('value'));
+ value[self.name] = String(li.data('value'));
if (self.record_id){
- return self.dataset._model.call('write', [[self.record_id], value, self.dataset.get_context()]).done(self.parent.reload_record.bind(self.parent));
+ return self.view.dataset._model.call('write', [[self.record_id], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self));
} else {
- return self.parent.view.on_button_save().done(function(result) {
- if (result){
- self.dataset._model.call('write', [[result], value, self.dataset.get_context()]).done(self.parent.reload_record.bind(self.parent));
+ return self.view.on_button_save().done(function(result) {
+ if (result) {
+ self.view.dataset._model.call('write', [[result], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self));
}
});
}
}
- }
-});
-
-instance.web.form.Legend = instance.web.form.FieldChar.extend({
- init: function (field_manager, node) {
- this._super(field_manager, node);
- this.legend = new instance.web.Legend(this, this.view.dataset);
},
reload_record: function(){
this.view.reload();
},
- render_value: function() {
- var self = this;
- self.legend.render_value(this.view.datarecord.id, {
- 'widget': self,
- 'view_mode':'form'
- });
- },
});
+
instance.web.form.FieldID = instance.web.form.FieldChar.extend({
process_modifiers: function () {
this._super();
@@ -5971,8 +5979,8 @@ instance.web.form.widgets = new instance.web.Registry({
'monetary': 'instance.web.form.FieldMonetary',
'many2many_checkboxes': 'instance.web.form.FieldMany2ManyCheckBoxes',
'x2many_counter': 'instance.web.form.X2ManyCounter',
- 'priority':'instance.web.form.Legend',
- 'dropdown_selection':'instance.web.form.Legend'
+ 'priority':'instance.web.form.priority',
+ 'dropdown_selection':'instance.web.form.dropdown_selection'
});
/**
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index 589ef50741b..e804b3f0f53 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -992,26 +992,26 @@
</span>
</t>
-<t t-name="Legend.kanban_state">
+<t t-name="dropdown_selection">
<span class="btn-group">
- <t t-foreach="legends" t-as="rec">
- <a t-att-class="'btn btn-xs '+ rec.legend_class" t-if="widget.get('value') === rec.name" t-att-title="rec.legend_name" >
- <t t-raw="rec.legend_name"/>
- <a t-att-class="'oe_legend btn btn-xs dropdown-toggle '+rec.legend_class" data-toggle="dropdown">
+ <t t-foreach="states" t-as="rec">
+ <a t-att-class="'btn btn-xs '+ rec.state_class" t-if="widget.get('value') === rec.name" t-att-title="rec.state_name" >
+ <t t-raw="rec.state_name"/>
+ <a t-att-class="'oe_legend btn btn-xs dropdown-toggle '+rec.state_class" data-toggle="dropdown">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span> </a>
</a>
</t>
<ul class="dropdown-menu state" role="menu">
- <t t-foreach="legends" t-as="rec">
+ <t t-foreach="states" t-as="rec">
<t t-if="widget.get('value') !== rec.name">
- <li class="oe_legend" t-att-data-value="rec.name" ><a href="#"><t t-raw="rec.legend_name" /></a></li>
+ <li class="oe_legend" t-att-data-value="rec.name" ><a href="#"><t t-raw="rec.state_name" /></a></li>
</t>
</t>
</ul>
</span>
</t>
-<t t-name="Legend.priority">
+<t t-name="priority">
<ul style="list-style: none; padding-left: 2px;">
<t t-foreach="legends" t-as="test" >
<t t-if="widget.get('value') gte test.name and !test_first">