[IMP] Misc kanban view improvements ( only record is reloaded when changed )

bzr revid: fme@openerp.com-20110927084747-k35v05v1f4hbyvj9
This commit is contained in:
Fabien Meghazi 2011-09-27 10:47:47 +02:00
commit b259161298
2 changed files with 31 additions and 28 deletions

View File

@ -217,8 +217,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({
},
on_record_saved: function(r) {
var id = this.form_dialog.form.datarecord.id;
// TODO fme: reload record instead of all. need refactoring
this.do_actual_search();
this.on_reload_record(id);
},
do_change_color: function(record_id, $e) {
var self = this,
@ -236,8 +235,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({
var data = {};
data[$e.data('name')] = $(this).data('color');
self.dataset.write(id, data, {}, function() {
// TODO fme: reload record instead of all. need refactoring
self.on_reload_record(id, data);
self.on_reload_record(id);
});
$cpicker.remove();
});
@ -245,28 +243,32 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({
/**
Reload one record in view.
record_id : reload record id.
data : change value in particular record.
*/
on_reload_record: function (record_id, data){
on_reload_record: function (record_id){
var self = this;
for (var i=0, ii=this.all_display_data.length; i < ii; i++) {
for(j=0, jj=this.all_display_data[i].records.length; j < jj; j++) {
if (this.all_display_data[i].records[j].id == record_id) {
_.extend(this.all_display_data[i].records[j], data);
this.$element.find("#main_" + record_id).children().remove();
this.$element.find("#main_" + record_id).append(this.qweb.render('kanban-box', {
record: this.do_transform_record(this.all_display_data[i].records[j]),
kanban_color: this.kanban_color,
kanban_gravatar: this.kanban_gravatar
}));
break;
this.dataset.read_ids([record_id], [], function (records) {
if (records.length > 0) {
for (var i=0, ii=self.all_display_data.length; i < ii; i++) {
for(j=0, jj=self.all_display_data[i].records.length; j < jj; j++) {
if (self.all_display_data[i].records[j].id == record_id) {
_.extend(self.all_display_data[i].records[j], records[0]);
self.$element.find("#main_" + record_id).children().remove();
self.$element.find("#main_" + record_id).append(self.qweb.render('kanban-box', {
record: self.do_transform_record(self.all_display_data[i].records[j]),
kanban_color: self.kanban_color,
kanban_gravatar: self.kanban_gravatar
}));
break;
}
}
}
self.$element.find("#main_" + record_id + " .oe_kanban_action").click(self.on_action_clicked);
self.$element.find("#main_" + record_id + " .oe_kanban_box_show_onclick_trigger").click(function() {
$(this).parent("#main_" + record_id + " .oe_kanban_box").find(".oe_kanban_box_show_onclick").toggle();
});
}
}
this.$element.find("#main_" + record_id + " .oe_kanban_action").click(this.on_action_clicked);
this.$element.find("#main_" + record_id + " .oe_kanban_box_show_onclick_trigger").click(function() {
$(this).parent("#main_" + record_id + " .oe_kanban_box").find(".oe_kanban_box_show_onclick").toggle();
});
},
do_delete: function (id) {
var self = this;
@ -304,7 +306,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({
if (!ui.item.attr("id")) {
return false;
}
// TODO fme: check what was this sequence
if (self.fields_view.fields.sequence != undefined && ((self.source_index.index >= 0 && self.source_index.index != from) ||
(self.source_index.column && self.source_index.column != ui.item.parent().attr('id')))) {
var child_record = ui.item.parent().children();

View File

@ -11,17 +11,19 @@
<tr>
<td t-foreach="data" t-as="columns" class="oe_table_column" t-att-id="'column_' + columns.value">
<img t-att-id="columns.value" class="fold-columns-icon" src="/web_kanban/static/src/img/minus-icon.png"/>
<div class="oe_fold_column oe_column_heading" t-att-id="'column_' + columns.value">
<t t-if="columns.value and columns.header" t-esc="columns.header"/>
</div>
<div t-foreach="columns.aggregates" t-as="aggregate">
<i><u><t t-esc="aggregate"/>:</u> <t t-esc="aggregate_value"/></i>
<div class="oe_fold_column" t-att-id="'column_' + columns.value">
<div class="oe_column_heading" t-if="columns.value and columns.header">
<t t-esc="columns.header"/>
</div>
<div t-foreach="columns.aggregates or {}" t-as="aggregate">
<i><u><t t-esc="aggregate"/>:</u> <t t-esc="aggregate_value"/></i>
</div>
</div>
</td>
</tr>
<tr>
<td t-foreach="data" t-as="columns" class="oe_column oe_table_column" t-att-id="'column_' + columns.value" t-attf-style="width: #{Math.round(99 / data.length)}%">
<p class="oe_vertical_text" t-att-id="'column_' + columns.value"><t t-esc="columns.header"/></p>
<p t-if="columns.header" class="oe_vertical_text" t-att-id="'column_' + columns.value"><t t-esc="columns.header"/></p>
<div t-foreach="columns.records" t-as="record" class="oe_fold_column oe_kanban_record" t-att-id="'main_' + record.id"/>
</td>
</tr>