[IMP]create four different widget for priority and dropdown_select for kanban and form view
bzr revid: mba@tinyerp.com-20140219132851-vyynhi29hla4k5ly
This commit is contained in:
parent
2c0141bace
commit
fd4b54a9cf
|
@ -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_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' }]
|
||||
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' }]
|
||||
},
|
||||
prepare_priority_legend: function(){
|
||||
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();
|
||||
},
|
||||
});
|
||||
|
||||
instance.web.form.priority = instance.web.form.FieldChar.extend({
|
||||
init: function (field_manager, node) {
|
||||
this._super(field_manager, node);
|
||||
},
|
||||
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'
|
||||
});
|
||||
|
||||
/**
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -1260,28 +1260,90 @@ instance.web_kanban.AbstractField = instance.web.Widget.extend(instance.web_kanb
|
|||
},
|
||||
});
|
||||
|
||||
instance.web_kanban.Legend = instance.web_kanban.AbstractField.extend({
|
||||
instance.web_kanban.priority = instance.web_kanban.AbstractField.extend({
|
||||
init: function(parent, field, $node) {
|
||||
this._super.apply(this, arguments);
|
||||
this.name = $node.attr('name')
|
||||
this.parent = parent;
|
||||
this.legend = new instance.web.Legend(this, parent.view.dataset);
|
||||
},
|
||||
reload_record: function(){
|
||||
this.parent.do_reload();
|
||||
prepare_priority: function(){
|
||||
var data = [];
|
||||
var selection = this.field.selection || [];
|
||||
_.map(selection, function(res){
|
||||
value = {
|
||||
'name': res[0],
|
||||
'legend_name': res[1]
|
||||
}
|
||||
if (res[0] == '0') {
|
||||
value['legend'] = '<img src="/web/static/src/img/icons/star-off.png"/>';
|
||||
value['legend_name'] = 'Set the Priority';
|
||||
} else {
|
||||
value['legend'] = '<img src="/web/static/src/img/icons/star-on.png"/>';
|
||||
}
|
||||
data.push(value)
|
||||
});
|
||||
return data;
|
||||
},
|
||||
renderElement: function() {
|
||||
var self = this;
|
||||
self.legend.render_value(self.parent.id, {
|
||||
'widget': self,
|
||||
});
|
||||
self.record_id = self.parent.id;
|
||||
var data = {'widget': self }
|
||||
data['legends'] = self.prepare_priority();
|
||||
var content = QWeb.render("priority", data);
|
||||
this.$el = $(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'));
|
||||
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));
|
||||
}
|
||||
},
|
||||
reload_record: function(){
|
||||
this.do_reload();
|
||||
},
|
||||
});
|
||||
|
||||
instance.web_kanban.dropdown_selection = instance.web_kanban.AbstractField.extend({
|
||||
init: function(parent, field, $node) {
|
||||
this._super.apply(this, arguments);
|
||||
this.name = $node.attr('name')
|
||||
this.parent = parent;
|
||||
},
|
||||
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' }]
|
||||
},
|
||||
renderElement: function() {
|
||||
var self = this;
|
||||
self.record_id = self.parent.id;
|
||||
var data = {'widget': self }
|
||||
data['states'] = self.prepare_dropdown_selection();
|
||||
var content = QWeb.render("dropdown_selection", data);
|
||||
this.$el = $(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'));
|
||||
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));
|
||||
}
|
||||
},
|
||||
reload_record: function(){
|
||||
this.do_reload();
|
||||
},
|
||||
});
|
||||
|
||||
instance.web_kanban.fields_registry = new instance.web.Registry({});
|
||||
instance.web_kanban.fields_registry.add('priority','instance.web_kanban.Legend');
|
||||
instance.web_kanban.fields_registry.add('dropdown_selection','instance.web_kanban.Legend');
|
||||
instance.web_kanban.fields_registry.add('priority','instance.web_kanban.priority');
|
||||
instance.web_kanban.fields_registry.add('dropdown_selection','instance.web_kanban.dropdown_selection');
|
||||
};
|
||||
|
||||
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
|
||||
|
|
Loading…
Reference in New Issue