[MERGE] [IMP] kanban: added drag 'n drop to folded columns.

bzr revid: tde@openerp.com-20131219135256-6n6bhjgfe888z3tl
This commit is contained in:
Thibault Delavallée
2013-12-19 14:52:56 +01:00
4 changed files with 49 additions and 4 deletions
+8 -1
View File
@@ -1,8 +1,10 @@
@charset "utf-8";
.openerp .oe_kanban_view {
background: white;
height: inherit;
}
.openerp .oe_kanban_view .oe_kanban_column_higlight {
background: #eeddf6 !important;
}
.openerp .oe_kanban_view .oe_view_nocontent {
position: relative;
max-width: none;
@@ -173,6 +175,11 @@
.openerp .oe_kanban_view .oe_kanban_group_folded .oe_dropdown_kanban {
left: -5px;
}
.openerp .oe_kanban_view .oe_kanban_group_folded .oe_kanban_folded_column_cards {
visibility: visible;
display: block !important;
height: 100%;
}
.openerp .oe_kanban_view .oe_kanban_group_title_undefined {
color: #666666;
}
@@ -51,6 +51,8 @@
//background: url(data:image/pngbase64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAKElEQVQIHWP8DwTv379nAAFBQUEGhnfv3oHEwADEZgJLIRGMIClkLQCr3x2Htp/lLwAAAABJRU5ErkJggg==)
background: white
height: inherit
.oe_kanban_column_higlight
background: #eeddf6 !important
.oe_view_nocontent
position: relative
max-width: none
@@ -189,6 +191,10 @@
display: block
.oe_dropdown_kanban
left: -5px
.oe_kanban_folded_column_cards
visibility: visible
display: block !important
height: 100%
.oe_kanban_group_title_undefined
color: #666666
.oe_kanban_group_title_vertical
+34 -3
View File
@@ -350,20 +350,38 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
var self = this;
if (this.group_by) {
// Kanban cards drag'n'drop
var $columns = this.$el.find('.oe_kanban_column .oe_kanban_column_cards');
var prev_widget, is_folded, record;
var $columns = this.$el.find('.oe_kanban_column .oe_kanban_column_cards, .oe_kanban_column .oe_kanban_folded_column_cards');
$columns.sortable({
handle : '.oe_kanban_draghandle',
start: function(event, ui) {
self.currently_dragging.index = ui.item.parent().children('.oe_kanban_record').index(ui.item);
self.currently_dragging.group = ui.item.parents('.oe_kanban_column:first').data('widget');
self.currently_dragging.group = prev_widget = ui.item.parents('.oe_kanban_column:first').data('widget');
ui.item.find('*').on('click.prevent', function(ev) {
return false;
});
record = ui.item.data('widget');
record.$el.bind('mouseup',function(ev,ui){
if (is_folded) {
record.$el.hide();
}
record.$el.unbind('mouseup');
})
ui.placeholder.height(ui.item.height());
},
over: function(event, ui) {
var parent = $(event.target).parent();
prev_widget.highlight(false);
is_folded = parent.hasClass('oe_kanban_group_folded');
if (is_folded) {
var widget = parent.data('widget');
widget.highlight(true);
prev_widget = widget;
}
},
revert: 150,
stop: function(event, ui) {
var record = ui.item.data('widget');
prev_widget.highlight(false);
var old_index = self.currently_dragging.index;
var new_index = ui.item.parent().children('.oe_kanban_record').index(ui.item);
var old_group = self.currently_dragging.group;
@@ -438,6 +456,10 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
this.dataset.write(record.id, data, {}).done(function() {
record.do_reload();
new_group.do_save_sequences();
if (new_group.state.folded) {
new_group.do_action_toggle_fold();
record.prependTo(new_group.$records.find('.oe_kanban_column_cards'));
}
}).fail(function(error, evt) {
evt.preventDefault();
alert(_t("An error has occured while moving the record to this group: ") + error.data.message);
@@ -792,6 +814,15 @@ instance.web_kanban.KanbanGroup = instance.web.Widget.extend({
self.view.dataset.ids.push(id);
self.do_add_records(records, true);
});
},
highlight: function(show){
if(show){
this.$el.addClass('oe_kanban_column_higlight');
this.$records.addClass('oe_kanban_column_higlight');
}else{
this.$el.removeClass('oe_kanban_column_higlight');
this.$records.removeClass('oe_kanban_column_higlight');
}
}
});
@@ -76,6 +76,7 @@
<td class="oe_kanban_column">
<div class="oe_kanban_group_list_header"/>
<div class="oe_kanban_column_cards"/>
<div class="oe_kanban_folded_column_cards"/>
<div class="oe_kanban_show_more">
<button class="oe_button">Show more... (<span class="oe_kanban_remaining"></span> remaining)</button>
</div>