[MERGE] Merged web branch holding timepicker update + kanban improvements (move into...
authorThibault Delavallée <tde@openerp.com>
Mon, 25 Nov 2013 10:05:47 +0000 (11:05 +0100)
committerThibault Delavallée <tde@openerp.com>
Mon, 25 Nov 2013 10:05:47 +0000 (11:05 +0100)
bzr revid: tde@openerp.com-20131125100547-vejcpe9p4le7jury

1  2 
addons/web_kanban/static/src/css/kanban.css
addons/web_kanban/static/src/css/kanban.sass
addons/web_kanban/static/src/js/kanban.js

@@@ -1,10 -1,13 +1,12 @@@
- @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;
 -  z-index: 1;
    max-width: none;
    height: 100%;
  }
@@@ -90,6 -93,9 +92,6 @@@
  .openerp .oe_kanban_view .oe_kanban_groups {
    height: inherit;
  }
 -.openerp .oe_kanban_view.oe_kanban_ungrouped .oe_kanban_groups {
 -  width: 100%;
 -}
  .openerp .oe_kanban_view.oe_kanban_grouped_by_m2o .oe_kanban_group_title {
    cursor: move;
  }
  .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;
  }
      //background: url(data:image/pngbase64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAKElEQVQIHWP8DwTv379nAAFBQUEGhnfv3oHEwADEZgJLIRGMIClkLQCr3x2Htp/lLwAAAABJRU5ErkJggg==)
      background: white
      height: inherit
+     .oe_kanban_column_higlight
+         background: #eeddf6 !important
      .oe_view_nocontent
          position: relative
 -        z-index: 1
          max-width: none
          height: 100%
          .oe_view_nocontent_content
      // KanbanGroups {{{
      .oe_kanban_groups
          height: inherit
 -    &.oe_kanban_ungrouped .oe_kanban_groups
 -        width: 100%
      &.oe_kanban_grouped_by_m2o .oe_kanban_group_title
          cursor: move
      .oe_kanban_header
              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
@@@ -239,11 -239,7 +239,11 @@@ instance.web_kanban.KanbanView = instan
              self.$buttons.find('.oe_alternative').toggle(self.grouped_by_m2o);
              self.$el.toggleClass('oe_kanban_grouped_by_m2o', self.grouped_by_m2o);
              var grouping_fields = self.group_by ? [self.group_by].concat(_.keys(self.aggregates)) : undefined;
 -            var grouping = new instance.web.Model(self.dataset.model, context, domain).query().group_by(grouping_fields);
 +            if (!_.isEmpty(grouping_fields)) {
 +                // ensure group_by fields are read.
 +                self.fields_keys = _.unique(self.fields_keys.concat(grouping_fields));
 +            }
 +            var grouping = new instance.web.Model(self.dataset.model, context, domain).query(self.fields_keys).group_by(grouping_fields);
              return self.alive($.when(grouping)).done(function(groups) {
                  self.remove_no_result();
                  if (groups) {
          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;
              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: ") + data.message);
@@@ -792,6 -808,15 +812,15 @@@ instance.web_kanban.KanbanGroup = insta
                  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');
+         }
      }
  });