diff --git a/addons/base_kanban/static/src/css/kanban.css b/addons/base_kanban/static/src/css/kanban.css new file mode 100644 index 00000000000..16f46f849a8 --- /dev/null +++ b/addons/base_kanban/static/src/css/kanban.css @@ -0,0 +1,40 @@ +.openerp .oe_column { + width: 100%; + float: left; + padding-bottom: 100px; +} + +.portlet { + width: 100%; + margin: 0 1em 1em 0; +} + +.portlet-header { + margin: 0.3em; + padding-bottom: 4px; + padding-left: 0.2em; +} + +.portlet-header .ui-icon { + float: right; +} + +.portlet-content { + padding: 0.4em; +} + +.ui-sortable-placeholder { + border: 1px dotted black; + visibility: visible !important; + height: 50px !important; +} + +.ui-sortable-placeholder * { + visibility: hidden; +} + +.openerp .oe_column_heading{ + color: #000000; + font-size: 1.5em; + font-weight: bold; +} diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index 72b47b4c99e..ee60d91be35 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -18,33 +18,33 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }, on_loaded: function(data) { var self = this; - var template_xml = ''; + this.template_xml = ''; _.each(data.fields_view.arch.children, function(child) { if (child.tag == "template"){ - template_xml = openerp.base.json_node_to_xml(child, true) + self.template_xml = openerp.base.json_node_to_xml(child, true) } }); - - if(template_xml){ + if(this.template_xml){ self.dataset.read_slice([], 0, false, function (records) { - self.on_show_data(records, template_xml); + self.on_show_data([{'records': records, 'value':false}]); }); } }, - on_show_data: function(records, template_xml) { + on_show_data: function(datas) { var self = this; var new_qweb = new QWeb2.Engine(); - new_qweb.add_template('' + template_xml + '') - - self.$element.html(QWeb.render("KanbanBiew", {"records" :records})); - _.each(records, function(record) { - self.$element.find("#data_" + record.id).append(new_qweb.render('custom_template', record)); + new_qweb.add_template('' + this.template_xml + '') + self.$element.html(QWeb.render("KanbanBiew", {"datas" :datas})); + _.each(datas, function(data) { + _.each(data.records, function(record) { + self.$element.find("#data_" + record.id).append(new_qweb.render('custom_template', record)); + }); }); - this.$element.find(".column").sortable({ - connectWith: ".column" + this.$element.find(".oe_column").sortable({ + connectWith: ".oe_column" }); this.$element.find(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") .find(".portlet-header") @@ -58,16 +58,56 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ $(this).parents(".portlet:first").find(".portlet-content").toggle(); }); this.$element.find('.portlet .ui-icon-closethick').click(this.on_close_action); - this.$element.find(".column").disableSelection(); + this.$element.find(".oe_column").disableSelection(); this.$element.find(".ui.item").css("background-color","#c3dAf9"); - - //self.$element.find( ".column" ).css("width",column_width); + self.$element.find( ".oe_column" ).css("width", 99 / datas.length +"%"); }, on_close_action: function(e) { $(e.currentTarget).parents('.portlet:first').remove(); }, + do_search: function (domains, contexts, group_by) { + var self = this; + this.rpc('/base/session/eval_domain_and_context', { + domains: domains, + contexts: contexts, + group_by_seq: group_by + }, function (results) { + self.dataset.context = results.context; + self.dataset.domain = results.domain; + self.groups = new openerp.base.DataGroup( + self, self.model, results.domain, results.context, results.group_by); + self.groups.list([], + function (groups) { + self.do_render_group(groups); + }, + function (dataset) { + self.dataset.read_slice(false, false, false, function(records) { + self.on_show_data([{'records': records, 'value':false}]); + }); + }); + }); + }, + + do_render_group : function(datagroups){ + this.columns = []; + var self = this; + _.each(datagroups, function (group) { + self.dataset.context = group.context; + self.dataset.domain = group.domain; + if(!group.value) { + group.value = "Undefined" + } + self.dataset.read_slice(false, false, false, function(records) { + self.columns.push({"value" : group.value, "records": records}); + if (datagroups.length == self.columns.length) { + self.on_show_data(self.columns); + } + }); + }); + }, + do_show: function () { this.$element.show(); }, diff --git a/addons/base_kanban/static/src/xml/base_kanban.xml b/addons/base_kanban/static/src/xml/base_kanban.xml new file mode 100644 index 00000000000..8a234ed6dae --- /dev/null +++ b/addons/base_kanban/static/src/xml/base_kanban.xml @@ -0,0 +1,21 @@ + \ No newline at end of file