[FIX] web_calendar: Selection fields used as color attributes of calendar view
JKE: + refactoring + auto select previous checkbox
This commit is contained in:
parent
913fa445aa
commit
23dc795ff2
|
@ -681,25 +681,33 @@ openerp.web_calendar = function(instance) {
|
|||
}
|
||||
|
||||
if (!self.useContacts) { // If we use all peoples displayed in the current month as filter in sidebars
|
||||
var filter_value;
|
||||
var filter_item;
|
||||
|
||||
self.now_filter_ids = [];
|
||||
|
||||
var color_field = self.fields[self.color_field];
|
||||
_.each(events, function (e) {
|
||||
filter_value = e[self.color_field][0];
|
||||
if (!self.all_filters[e[self.color_field][0]]) {
|
||||
var key,val = null;
|
||||
if (self.color_field.type == "selection") {
|
||||
key = e[self.color_field];
|
||||
val = _.find( self.color_field.selection, function(name){ return name[0] === key;});
|
||||
}
|
||||
else {
|
||||
key = e[self.color_field][0];
|
||||
val = e[self.color_field];
|
||||
}
|
||||
if (!self.all_filters[key]) {
|
||||
filter_item = {
|
||||
value: filter_value,
|
||||
label: e[self.color_field][1],
|
||||
color: self.get_color(filter_value),
|
||||
value: key,
|
||||
label: val[1],
|
||||
color: self.get_color(key),
|
||||
avatar_model: (_.str.toBoolElse(self.avatar_filter, true) ? self.avatar_filter : false ),
|
||||
is_checked: true
|
||||
};
|
||||
self.all_filters[e[self.color_field][0]] = filter_item;
|
||||
self.all_filters[key] = filter_item;
|
||||
}
|
||||
if (! _.contains(self.now_filter_ids, filter_value)) {
|
||||
self.now_filter_ids.push(filter_value);
|
||||
if (! _.contains(self.now_filter_ids, key)) {
|
||||
self.now_filter_ids.push(key);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -708,7 +716,8 @@ openerp.web_calendar = function(instance) {
|
|||
self.sidebar.filter.set_filters();
|
||||
|
||||
events = $.map(events, function (e) {
|
||||
if (_.contains(self.now_filter_ids,e[self.color_field][0]) && self.all_filters[e[self.color_field][0]].is_checked) {
|
||||
var key = self.color_field.type == "selection" ? e[self.color_field] : e[self.color_field][0];
|
||||
if (_.contains(self.now_filter_ids, key) && self.all_filters[key].is_checked) {
|
||||
return e;
|
||||
}
|
||||
return null;
|
||||
|
@ -730,10 +739,7 @@ openerp.web_calendar = function(instance) {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
var all_attendees = $.map(events, function (e) { return e[self.attendee_people]; });
|
||||
all_attendees = _.chain(all_attendees).flatten().uniq().value();
|
||||
|
||||
|
@ -1378,7 +1384,9 @@ openerp.web_calendar = function(instance) {
|
|||
});
|
||||
instance.web_calendar.SidebarFilter = instance.web.Widget.extend({
|
||||
events: {
|
||||
'change input:checkbox': 'filter_click'
|
||||
'change input:checkbox': 'filter_click',
|
||||
'click span.color_filter': 'select_previous',
|
||||
|
||||
},
|
||||
init: function(parent, view) {
|
||||
this._super(parent);
|
||||
|
@ -1409,10 +1417,13 @@ openerp.web_calendar = function(instance) {
|
|||
if (self.view.all_filters[0] && e.target.value == self.view.all_filters[0].value) {
|
||||
self.view.all_filters[0].is_checked = e.target.checked;
|
||||
} else {
|
||||
self.view.all_filters[parseInt(e.target.value)].is_checked = e.target.checked;
|
||||
self.view.all_filters[e.target.value].is_checked = e.target.checked;
|
||||
}
|
||||
self.view.$calendar.fullCalendar('refetchEvents');
|
||||
},
|
||||
select_previous: function(e) {
|
||||
$(e.target).siblings('input').trigger('click');
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
<t t-name="CalendarView.sidebar.responsible">
|
||||
<div class="oe_calendar_all_responsibles">
|
||||
<div t-foreach="filters" class="oe_calendar_responsible" >
|
||||
<t t-if="filters_value.value>=-1"> <!-- don't display if no value given (or undefined) -->
|
||||
<t t-if="filters_value.value"> <!-- don't display if no value given (or undefined) -->
|
||||
<input type="checkbox" name="selection" t-att-value="filters_value.value" checked="checked" />
|
||||
<t t-if="filters_value.value == -1">
|
||||
<span><i t-attf-class="fa fa-users fa-fw cal_avatar" ></i></span>
|
||||
|
@ -35,7 +35,7 @@
|
|||
<t t-if="(filters_value.value != -1) && filters_value.avatar_model ">
|
||||
<img t-att-src="'/web/binary/image?model=' + filters_value.avatar_model + '&field=image_small&id=' + filters_value.value" class="cal_avatar"/>
|
||||
</t>
|
||||
<span id="color_filter" t-attf-class="cal_opacity underline_color_#{filters_value.color}" ><t t-esc="filters_value.label" /></span>
|
||||
<span t-attf-class="color_filter cal_opacity underline_color_#{filters_value.color}" ><t t-esc="filters_value.label" /></span>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue