[IMP] web, web_calendar: New calendar
This commit is contained in:
@@ -159,7 +159,7 @@ var ControlPanel = Widget.extend({
|
|||||||
|
|
||||||
function make_breadcrumb (bc, is_last) {
|
function make_breadcrumb (bc, is_last) {
|
||||||
var $bc = $('<li>')
|
var $bc = $('<li>')
|
||||||
.append(is_last ? bc.title : $('<a>').text(bc.title))
|
.append(is_last ? bc.title : $('<a>').html(bc.title))
|
||||||
.toggleClass('active', is_last);
|
.toggleClass('active', is_last);
|
||||||
if (!is_last) {
|
if (!is_last) {
|
||||||
$bc.click(function () {
|
$bc.click(function () {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
@odoo-main-color-muted: #a8a8a8;
|
@odoo-main-color-muted: #a8a8a8;
|
||||||
@odoo-main-text-color: #666666;
|
@odoo-main-text-color: #666666;
|
||||||
@odoo-webclient-background-color: @odoo-brand-secondary;
|
@odoo-webclient-background-color: @odoo-brand-secondary;
|
||||||
@odoo-view-background-color: red;
|
@odoo-view-background-color: white;
|
||||||
@odoo-shadow-color: #303030;
|
@odoo-shadow-color: #303030;
|
||||||
@brand-primary: @odoo-brand-primary;
|
@brand-primary: @odoo-brand-primary;
|
||||||
|
|
||||||
|
|||||||
@@ -1,423 +0,0 @@
|
|||||||
@charset "utf-8"
|
|
||||||
|
|
||||||
|
|
||||||
$color1: #ac725e
|
|
||||||
$color2: #d06b64
|
|
||||||
$color3: #f83a22
|
|
||||||
$color4: #fa573c
|
|
||||||
$color5: #ff7537
|
|
||||||
$color6: #ffad46
|
|
||||||
$color7: #42d692
|
|
||||||
$color8: #16a765
|
|
||||||
$color9: #7bd148
|
|
||||||
$color10: #b3dc6c
|
|
||||||
$color11: #fbe983
|
|
||||||
$color12: #fad165
|
|
||||||
$color13: #92e1c0
|
|
||||||
$color14: #9fe1e7
|
|
||||||
$color15: #9fc6e7
|
|
||||||
$color16: #4986e7
|
|
||||||
$color17: #9a9cff
|
|
||||||
$color18: #b99aff
|
|
||||||
$color19: #c2c2c2
|
|
||||||
$color20: #cabdbf
|
|
||||||
$color21: #cca6ac
|
|
||||||
$color22: #f691b2
|
|
||||||
$color23: #cd74e6
|
|
||||||
$color24: #a47ae2
|
|
||||||
$ecolor1: #a4bdfc
|
|
||||||
$ecolor2: #7ae7bf
|
|
||||||
$ecolor3: #dbadff
|
|
||||||
$ecolor4: #ff887c
|
|
||||||
$ecolor5: #fbd75b
|
|
||||||
$ecolor6: #ffb878
|
|
||||||
$ecolor7: #46d6db
|
|
||||||
$ecolor8: #e1e1e1
|
|
||||||
$ecolor9: #5484ed
|
|
||||||
$ecolor10:#51b749
|
|
||||||
$ecolor11: #dc2127
|
|
||||||
$fontcolor: #0d0d0d
|
|
||||||
|
|
||||||
.openerp
|
|
||||||
.oe_calendar_quick_create
|
|
||||||
margin: 12px
|
|
||||||
|
|
||||||
.oe-view-manager-view-calendar
|
|
||||||
position: relative
|
|
||||||
padding-top: 10px
|
|
||||||
padding-left: 5px
|
|
||||||
|
|
||||||
.openerp
|
|
||||||
.oe_searchview.oe_searchview_open_drawer
|
|
||||||
.oe_searchview_drawer
|
|
||||||
z-index: 10
|
|
||||||
|
|
||||||
.openerp
|
|
||||||
td.oe_calendar_sidebar_container
|
|
||||||
padding: 10px
|
|
||||||
|
|
||||||
.openerp
|
|
||||||
.o-dashboard
|
|
||||||
td.oe_calendar_sidebar_container
|
|
||||||
display: none
|
|
||||||
|
|
||||||
img.attendee_head
|
|
||||||
height: 18px
|
|
||||||
width: 18px
|
|
||||||
|
|
||||||
.openerp .oe_calendar_table
|
|
||||||
.attendee_head
|
|
||||||
float: right
|
|
||||||
margin-left: 1px
|
|
||||||
size: 18px !important
|
|
||||||
|
|
||||||
.cal_avatar
|
|
||||||
height: 24px
|
|
||||||
width: 24px
|
|
||||||
|
|
||||||
.cal_opacity
|
|
||||||
opacity: 0.6
|
|
||||||
|
|
||||||
.event_color_1
|
|
||||||
background-color: $ecolor1
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.event_color_2
|
|
||||||
background-color: $ecolor2
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.event_color_3
|
|
||||||
background-color: $ecolor3
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.event_color_4
|
|
||||||
background-color: $ecolor4
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.event_color_5
|
|
||||||
background-color: $ecolor5
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.event_color_6
|
|
||||||
background-color: $ecolor6
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.event_color_7
|
|
||||||
background-color: $ecolor7
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.event_color_8
|
|
||||||
background-color: $ecolor8
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.event_color_9
|
|
||||||
background-color: $ecolor9
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.event_color_10
|
|
||||||
background-color: $ecolor10
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.event_color_11
|
|
||||||
background-color: $ecolor11
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_1
|
|
||||||
border-color: $color1
|
|
||||||
background-color: $color1
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_2
|
|
||||||
border-color: $color2
|
|
||||||
background-color: $color2
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_3
|
|
||||||
border-color: $color3
|
|
||||||
background-color: $color3
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_4
|
|
||||||
border-color: $color4
|
|
||||||
background-color: $color4
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_5
|
|
||||||
border-color: $color5
|
|
||||||
background-color: $color5
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_6
|
|
||||||
border-color: $color6
|
|
||||||
background-color: $color6
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_7
|
|
||||||
border-color: $color7
|
|
||||||
background-color: $color7
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_8
|
|
||||||
border-color: $color8
|
|
||||||
background-color: $color8
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_9
|
|
||||||
border-color: $color9
|
|
||||||
background-color: $color9
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_10
|
|
||||||
border-color: $color10
|
|
||||||
background-color: $color10
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_11
|
|
||||||
border-color: $color11
|
|
||||||
background-color: $color11
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_12
|
|
||||||
border-color: $color12
|
|
||||||
background-color: $color12
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_13
|
|
||||||
border-color: $color13
|
|
||||||
background-color: $color13
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_14
|
|
||||||
border-color: $color14
|
|
||||||
background-color: $color14
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_15
|
|
||||||
border-color: $color15
|
|
||||||
background-color: $color15
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_16
|
|
||||||
border-color: $color16
|
|
||||||
background-color: $color16
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_17
|
|
||||||
border-color: $color17
|
|
||||||
background-color: $color17
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_18
|
|
||||||
border-color: $color18
|
|
||||||
background-color: $color18
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_19
|
|
||||||
border-color: $color19
|
|
||||||
background-color: $color19
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_20
|
|
||||||
border-color: $color20
|
|
||||||
background-color: $color20
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_21
|
|
||||||
border-color: $color21
|
|
||||||
background-color: $color21
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_22
|
|
||||||
border-color: $color22
|
|
||||||
background-color: $color22
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_23
|
|
||||||
border-color: $color23
|
|
||||||
background-color: $color23
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
.calendar_color_24
|
|
||||||
border-color: $color24
|
|
||||||
background-color: $color24
|
|
||||||
color: $fontcolor
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.underline_ecolor_1
|
|
||||||
border-bottom: 4px solid $ecolor1
|
|
||||||
|
|
||||||
.underline_ecolor_2
|
|
||||||
border-bottom: 4px solid $ecolor2
|
|
||||||
|
|
||||||
.underline_ecolor_3
|
|
||||||
border-bottom: 4px solid $ecolor3
|
|
||||||
|
|
||||||
.underline_ecolor_4
|
|
||||||
border-bottom: 4px solid $ecolor4
|
|
||||||
|
|
||||||
.underline_ecolor_5
|
|
||||||
border-bottom: 4px solid $ecolor5
|
|
||||||
|
|
||||||
.underline_ecolor_6
|
|
||||||
border-bottom: 4px solid $ecolor6
|
|
||||||
|
|
||||||
.underline_ecolor_7
|
|
||||||
border-bottom: 4px solid $ecolor7
|
|
||||||
|
|
||||||
.underline_ecolor_8
|
|
||||||
border-bottom: 4px solid $ecolor8
|
|
||||||
|
|
||||||
.underline_ecolor_9
|
|
||||||
border-bottom: 4px solid $ecolor9
|
|
||||||
|
|
||||||
.underline_ecolor_10
|
|
||||||
border-bottom: 4px solid $ecolor10
|
|
||||||
|
|
||||||
.underline_ecolor_11
|
|
||||||
border-bottom: 4px solid $ecolor11
|
|
||||||
|
|
||||||
|
|
||||||
.underline_color_1
|
|
||||||
border-bottom: 4px solid $color1
|
|
||||||
|
|
||||||
.underline_color_2
|
|
||||||
border-bottom: 4px solid $color2
|
|
||||||
|
|
||||||
.underline_color_3
|
|
||||||
border-bottom: 4px solid $color3
|
|
||||||
|
|
||||||
.underline_color_4
|
|
||||||
border-bottom: 4px solid $color4
|
|
||||||
|
|
||||||
.underline_color_5
|
|
||||||
border-bottom: 4px solid $color5
|
|
||||||
|
|
||||||
.underline_color_6
|
|
||||||
border-bottom: 4px solid $color6
|
|
||||||
|
|
||||||
.underline_color_7
|
|
||||||
border-bottom: 4px solid $color7
|
|
||||||
|
|
||||||
.underline_color_8
|
|
||||||
border-bottom: 4px solid $color8
|
|
||||||
|
|
||||||
.underline_color_9
|
|
||||||
border-bottom: 4px solid $color9
|
|
||||||
|
|
||||||
.underline_color_10
|
|
||||||
border-bottom: 4px solid $color10
|
|
||||||
|
|
||||||
.underline_color_11
|
|
||||||
border-bottom: 4px solid $color11
|
|
||||||
|
|
||||||
.underline_color_12
|
|
||||||
border-bottom: 4px solid $color12
|
|
||||||
|
|
||||||
.underline_color_13
|
|
||||||
border-bottom: 4px solid $color13
|
|
||||||
|
|
||||||
.underline_color_14
|
|
||||||
border-bottom: 4px solid $color14
|
|
||||||
|
|
||||||
.underline_color_15
|
|
||||||
border-bottom: 4px solid $color15
|
|
||||||
|
|
||||||
.underline_color_16
|
|
||||||
border-bottom: 4px solid $color16
|
|
||||||
|
|
||||||
.underline_color_17
|
|
||||||
border-bottom: 4px solid $color17
|
|
||||||
|
|
||||||
.underline_color_18
|
|
||||||
border-bottom: 4px solid $color18
|
|
||||||
|
|
||||||
.underline_color_19
|
|
||||||
border-bottom: 4px solid $color19
|
|
||||||
|
|
||||||
.underline_color_20
|
|
||||||
border-bottom: 4px solid $color20
|
|
||||||
|
|
||||||
.underline_color_21
|
|
||||||
border-bottom: 4px solid $color21
|
|
||||||
|
|
||||||
.underline_color_22
|
|
||||||
border-bottom: 4px solid $color22
|
|
||||||
|
|
||||||
.underline_color_23
|
|
||||||
border-bottom: 4px solid $color23
|
|
||||||
|
|
||||||
.underline_color_24
|
|
||||||
border-bottom: 4px solid $color24
|
|
||||||
|
|
||||||
.color_1
|
|
||||||
color: $color1
|
|
||||||
|
|
||||||
.color_2
|
|
||||||
color: $color2
|
|
||||||
|
|
||||||
.color_3
|
|
||||||
color: $color3
|
|
||||||
|
|
||||||
.color_4
|
|
||||||
color: $color4
|
|
||||||
|
|
||||||
.color_5
|
|
||||||
color: $color5
|
|
||||||
|
|
||||||
.color_6
|
|
||||||
color: $color6
|
|
||||||
|
|
||||||
.color_7
|
|
||||||
color: $color7
|
|
||||||
|
|
||||||
.color_8
|
|
||||||
color: $color8
|
|
||||||
|
|
||||||
.color_9
|
|
||||||
color: $color9
|
|
||||||
|
|
||||||
.color_10
|
|
||||||
color: $color10
|
|
||||||
|
|
||||||
.color_11
|
|
||||||
color: $color11
|
|
||||||
|
|
||||||
.color_12
|
|
||||||
color: $color12
|
|
||||||
|
|
||||||
.color_13
|
|
||||||
color: $color13
|
|
||||||
|
|
||||||
.color_14
|
|
||||||
color: $color14
|
|
||||||
|
|
||||||
.color_15
|
|
||||||
color: $color15
|
|
||||||
|
|
||||||
.color_16
|
|
||||||
color: $color16
|
|
||||||
|
|
||||||
.color_17
|
|
||||||
color: $color17
|
|
||||||
|
|
||||||
.color_18
|
|
||||||
color: $color18
|
|
||||||
|
|
||||||
.color_19
|
|
||||||
color: $color19
|
|
||||||
|
|
||||||
.color_20
|
|
||||||
color: $color20
|
|
||||||
|
|
||||||
.color_21
|
|
||||||
color: $color21
|
|
||||||
|
|
||||||
.color_22
|
|
||||||
color: $color22
|
|
||||||
|
|
||||||
.color_23
|
|
||||||
color: $color23
|
|
||||||
|
|
||||||
.color_24
|
|
||||||
color: $color24
|
|
||||||
@@ -32,12 +32,6 @@ function get_fc_defaultOptions() {
|
|||||||
return {
|
return {
|
||||||
weekNumberTitle: _t("W"),
|
weekNumberTitle: _t("W"),
|
||||||
allDayText: _t("All day"),
|
allDayText: _t("All day"),
|
||||||
buttonText : {
|
|
||||||
today: _t("Today"),
|
|
||||||
month: _t("Month"),
|
|
||||||
week: _t("Week"),
|
|
||||||
day: _t("Day")
|
|
||||||
},
|
|
||||||
monthNames: moment.months(),
|
monthNames: moment.months(),
|
||||||
monthNamesShort: moment.monthsShort(),
|
monthNamesShort: moment.monthsShort(),
|
||||||
dayNames: moment.weekdays(),
|
dayNames: moment.weekdays(),
|
||||||
@@ -53,7 +47,7 @@ function get_fc_defaultOptions() {
|
|||||||
},
|
},
|
||||||
titleFormat: {
|
titleFormat: {
|
||||||
month: 'MMMM yyyy',
|
month: 'MMMM yyyy',
|
||||||
week: dateFormat + "{ '—'"+ dateFormat,
|
week: "W",
|
||||||
day: dateFormat,
|
day: dateFormat,
|
||||||
},
|
},
|
||||||
columnFormat: {
|
columnFormat: {
|
||||||
@@ -94,6 +88,8 @@ var CalendarView = View.extend({
|
|||||||
this.range_stop = null;
|
this.range_stop = null;
|
||||||
this.selected_filters = [];
|
this.selected_filters = [];
|
||||||
|
|
||||||
|
this.title = (this.options.action)? this.options.action.name : '';
|
||||||
|
|
||||||
this.shown = $.Deferred();
|
this.shown = $.Deferred();
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -117,7 +113,7 @@ var CalendarView = View.extend({
|
|||||||
var attrs = fv.arch.attrs,
|
var attrs = fv.arch.attrs,
|
||||||
self = this;
|
self = this;
|
||||||
this.fields_view = fv;
|
this.fields_view = fv;
|
||||||
this.$calendar = this.$el.find(".oe_calendar_widget");
|
this.$calendar = this.$(".o_calendar_widget");
|
||||||
|
|
||||||
this.info_fields = [];
|
this.info_fields = [];
|
||||||
|
|
||||||
@@ -138,6 +134,10 @@ var CalendarView = View.extend({
|
|||||||
this.how_display_event = '';
|
this.how_display_event = '';
|
||||||
this.attendee_people = attrs.attendee;
|
this.attendee_people = attrs.attendee;
|
||||||
|
|
||||||
|
// Check whether the date field is editable (i.e. if the events can be dragged and dropped)
|
||||||
|
var main_date_field = this.date_start || this.date_end || this.date_delay;
|
||||||
|
this.editable = !this.options.read_only_mode && !this.fields_view.fields[main_date_field].readonly;
|
||||||
|
|
||||||
//if quick_add = False, we don't allow quick_add
|
//if quick_add = False, we don't allow quick_add
|
||||||
//if quick_add = not specified in view, we use the default quick_create_instance
|
//if quick_add = not specified in view, we use the default quick_create_instance
|
||||||
//if quick_add = is NOT False and IS specified in view, we this one for quick_create_instance'
|
//if quick_add = is NOT False and IS specified in view, we this one for quick_create_instance'
|
||||||
@@ -249,15 +249,28 @@ var CalendarView = View.extend({
|
|||||||
render_buttons: function($node) {
|
render_buttons: function($node) {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.$buttons = $(QWeb.render("CalendarView.buttons", {'widget': this}));
|
this.$buttons = $(QWeb.render("CalendarView.buttons", {'widget': this}));
|
||||||
this.$buttons.on('click', 'button.oe_calendar_button_new', function () {
|
this.$buttons.on('click', 'button.o_calendar_button_new', function () {
|
||||||
self.dataset.index = null;
|
self.dataset.index = null;
|
||||||
self.do_switch_view('form');
|
self.do_switch_view('form');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var bindCalendarButton = function(selector, arg1, arg2) {
|
||||||
|
self.$buttons.on('click', selector, _.bind(self.$calendar.fullCalendar, self.$calendar, arg1, arg2));
|
||||||
|
}
|
||||||
|
bindCalendarButton('.o_calendar_button_prev', 'prev');
|
||||||
|
bindCalendarButton('.o_calendar_button_today', 'today');
|
||||||
|
bindCalendarButton('.o_calendar_button_next', 'next');
|
||||||
|
bindCalendarButton('.o_calendar_button_day', 'changeView', 'agendaDay');
|
||||||
|
bindCalendarButton('.o_calendar_button_week', 'changeView', 'agendaWeek');
|
||||||
|
bindCalendarButton('.o_calendar_button_month', 'changeView', 'month');
|
||||||
|
|
||||||
|
this.$buttons.find('.o_calendar_button_' + this.mode).addClass('active');
|
||||||
|
|
||||||
$node = $node || this.options.$buttons;
|
$node = $node || this.options.$buttons;
|
||||||
if ($node) {
|
if ($node) {
|
||||||
this.$buttons.appendTo($node);
|
this.$buttons.appendTo($node);
|
||||||
} else {
|
} else {
|
||||||
this.$('.oe_calendar_buttons').replaceWith(this.$buttons);
|
this.$('.o_calendar_buttons').replaceWith(this.$buttons);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
get_fc_init_options: function () {
|
get_fc_init_options: function () {
|
||||||
@@ -265,21 +278,25 @@ var CalendarView = View.extend({
|
|||||||
var self = this;
|
var self = this;
|
||||||
return $.extend({}, get_fc_defaultOptions(), {
|
return $.extend({}, get_fc_defaultOptions(), {
|
||||||
|
|
||||||
defaultView: (this.mode == "month")?"month":
|
defaultView: (this.mode == "month")? "month" : ((this.mode == "week")? "agendaWeek" : ((this.mode == "day")? "agendaDay" : "agendaWeek")),
|
||||||
(this.mode == "week"?"agendaWeek":
|
header: false,
|
||||||
(this.mode == "day"?"agendaDay":"month")),
|
|
||||||
header: {
|
|
||||||
left: 'prev,next today',
|
|
||||||
center: 'title',
|
|
||||||
right: 'month,agendaWeek,agendaDay'
|
|
||||||
},
|
|
||||||
selectable: !this.options.read_only_mode && this.create_right,
|
selectable: !this.options.read_only_mode && this.create_right,
|
||||||
selectHelper: true,
|
selectHelper: true,
|
||||||
editable: !this.options.read_only_mode,
|
editable: this.editable,
|
||||||
droppable: true,
|
droppable: true,
|
||||||
|
|
||||||
// callbacks
|
// callbacks
|
||||||
|
|
||||||
|
viewRender: function(view) {
|
||||||
|
var mode = (view.name == "month")? "month" : ((view.name == "agendaWeek") ? "week" : "day");
|
||||||
|
if(self.$buttons !== undefined) {
|
||||||
|
self.$buttons.find('.active').removeClass('active');
|
||||||
|
self.$buttons.find('.o_calendar_button_' + mode).addClass('active');
|
||||||
|
}
|
||||||
|
|
||||||
|
var title = self.title + ' (' + ((mode === "week")? _t("Week ") : "") + view.title + ")";
|
||||||
|
self.set({'title': title});
|
||||||
|
},
|
||||||
eventDrop: function (event, _day_delta, _minute_delta, _all_day, _revertFunc) {
|
eventDrop: function (event, _day_delta, _minute_delta, _all_day, _revertFunc) {
|
||||||
var data = self.get_event_data(event);
|
var data = self.get_event_data(event);
|
||||||
self.proxy('update_record')(event._id, data); // we don't revert the event, but update it.
|
self.proxy('update_record')(event._id, data); // we don't revert the event, but update it.
|
||||||
@@ -307,18 +324,15 @@ var CalendarView = View.extend({
|
|||||||
allDay: all_day,
|
allDay: all_day,
|
||||||
});
|
});
|
||||||
self.open_quick_create(data_template);
|
self.open_quick_create(data_template);
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
unselectAuto: false,
|
unselectAuto: false,
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
calendarMiniChanged: function (context) {
|
calendarMiniChanged: function (context) {
|
||||||
return function(datum,obj) {
|
return function(datum,obj) {
|
||||||
var curView = context.$calendar.fullCalendar( 'getView');
|
var curView = context.$calendar.fullCalendar('getView');
|
||||||
var curDate = new Date(obj.currentYear , obj.currentMonth, obj.currentDay);
|
var curDate = new Date(obj.currentYear , obj.currentMonth, obj.currentDay);
|
||||||
|
|
||||||
if (curView.name == "agendaWeek") {
|
if (curView.name == "agendaWeek") {
|
||||||
@@ -327,7 +341,7 @@ var CalendarView = View.extend({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (curView.name != "agendaDay" || (curView.name == "agendaDay" && moment(curDate).diff(moment(curView.start))===0)) {
|
else if (curView.name != "agendaDay" || (curView.name == "agendaDay" && moment(curDate).diff(moment(curView.start))===0)) {
|
||||||
context.$calendar.fullCalendar('changeView','agendaWeek');
|
context.$calendar.fullCalendar('changeView','agendaWeek');
|
||||||
}
|
}
|
||||||
context.$calendar.fullCalendar('gotoDate', obj.currentYear , obj.currentMonth, obj.currentDay);
|
context.$calendar.fullCalendar('gotoDate', obj.currentYear , obj.currentMonth, obj.currentDay);
|
||||||
};
|
};
|
||||||
@@ -339,9 +353,9 @@ var CalendarView = View.extend({
|
|||||||
if (!this.sidebar) {
|
if (!this.sidebar) {
|
||||||
var translate = get_fc_defaultOptions();
|
var translate = get_fc_defaultOptions();
|
||||||
this.sidebar = new widgets.Sidebar(this);
|
this.sidebar = new widgets.Sidebar(this);
|
||||||
this.sidebar.appendTo(this.$el.find('.oe_calendar_sidebar_container'));
|
this.sidebar.appendTo(this.$('.o_calendar_sidebar_container'));
|
||||||
|
|
||||||
this.$small_calendar = self.$el.find(".oe_calendar_mini");
|
this.$small_calendar = self.$(".o_calendar_mini");
|
||||||
this.$small_calendar.datepicker({
|
this.$small_calendar.datepicker({
|
||||||
onSelect: self.calendarMiniChanged(self),
|
onSelect: self.calendarMiniChanged(self),
|
||||||
dayNamesMin : translate.dayNamesShort,
|
dayNamesMin : translate.dayNamesShort,
|
||||||
@@ -561,7 +575,7 @@ var CalendarView = View.extend({
|
|||||||
attendee_showed += 1;
|
attendee_showed += 1;
|
||||||
if (attendee_showed<= MAX_ATTENDEES) {
|
if (attendee_showed<= MAX_ATTENDEES) {
|
||||||
if (self.avatar_model !== null) {
|
if (self.avatar_model !== null) {
|
||||||
the_title_avatar += '<img title="' + self.all_attendees[the_attendee_people] + '" class="attendee_head" \
|
the_title_avatar += '<img title="' + self.all_attendees[the_attendee_people] + '" class="o_attendee_head" \
|
||||||
src="/web/binary/image?model=' + self.avatar_model + '&field=image_small&id=' + the_attendee_people + '"></img>';
|
src="/web/binary/image?model=' + self.avatar_model + '&field=image_small&id=' + the_attendee_people + '"></img>';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -569,7 +583,7 @@ var CalendarView = View.extend({
|
|||||||
var tempColor = (self.all_filters[the_attendee_people] !== undefined)
|
var tempColor = (self.all_filters[the_attendee_people] !== undefined)
|
||||||
? self.all_filters[the_attendee_people].color
|
? self.all_filters[the_attendee_people].color
|
||||||
: (self.all_filters[-1] ? self.all_filters[-1].color : 1);
|
: (self.all_filters[-1] ? self.all_filters[-1].color : 1);
|
||||||
the_title_avatar += '<i class="fa fa-user attendee_head color_'+tempColor+'" title="' + self.all_attendees[the_attendee_people] + '" ></i>';
|
the_title_avatar += '<i class="fa fa-user o_attendee_head o_underline_color_'+tempColor+'" title="' + self.all_attendees[the_attendee_people] + '" ></i>';
|
||||||
}//else don't add myself
|
}//else don't add myself
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -579,7 +593,7 @@ var CalendarView = View.extend({
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
if (attendee_other.length>2) {
|
if (attendee_other.length>2) {
|
||||||
the_title_avatar += '<span class="attendee_head" title="' + attendee_other.slice(0, -2) + '">+</span>';
|
the_title_avatar += '<span class="o_attendee_head" title="' + attendee_other.slice(0, -2) + '">+</span>';
|
||||||
}
|
}
|
||||||
the_title = the_title_avatar + the_title;
|
the_title = the_title_avatar + the_title;
|
||||||
}
|
}
|
||||||
@@ -603,11 +617,11 @@ var CalendarView = View.extend({
|
|||||||
if (typeof color_key === "object") {
|
if (typeof color_key === "object") {
|
||||||
color_key = color_key[0];
|
color_key = color_key[0];
|
||||||
}
|
}
|
||||||
r.className = 'cal_opacity calendar_color_'+ this.get_color(color_key);
|
r.className = 'o_calendar_color_'+ this.get_color(color_key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // if form all, get color -1
|
else { // if form all, get color -1
|
||||||
r.className = 'cal_opacity calendar_color_'+ self.all_filters[-1].color;
|
r.className = 'o_calendar_color_'+ self.all_filters[-1].color;
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
},
|
},
|
||||||
@@ -665,7 +679,6 @@ var CalendarView = View.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.date_delay) {
|
if (this.date_delay) {
|
||||||
|
|
||||||
data[this.date_delay] = diff_seconds / 3600;
|
data[this.date_delay] = diff_seconds / 3600;
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ var QuickCreate = Widget.extend({
|
|||||||
}
|
}
|
||||||
var title = (_.isUndefined(parent.field_widget)) ?
|
var title = (_.isUndefined(parent.field_widget)) ?
|
||||||
(parent.string || parent.name) :
|
(parent.string || parent.name) :
|
||||||
parent.field_widget.string || parent.field_widget.name || '';
|
(parent.field_widget.string || parent.field_widget.name || '');
|
||||||
return _t("Create: ") + title;
|
return _t("Create: ") + title;
|
||||||
},
|
},
|
||||||
start: function () {
|
start: function () {
|
||||||
@@ -64,18 +64,18 @@ var QuickCreate = Widget.extend({
|
|||||||
self.slow_add();
|
self.slow_add();
|
||||||
}}
|
}}
|
||||||
] : []
|
] : []
|
||||||
}, QWeb.render('CalendarView.quick_create', {widged: this}))
|
}, QWeb.render('CalendarView.quick_create', {widget: this}))
|
||||||
.on('closed', self, function() {
|
.on('closed', self, function() {
|
||||||
self.trigger('close');
|
self.trigger('close');
|
||||||
})
|
})
|
||||||
.open();
|
.open();
|
||||||
this.$input = this.$dialog.$('input').keyup(function enterHandler (e) {
|
this.$input = this.$dialog.$('input').keyup(function enterHandler (e) {
|
||||||
if(e.keyCode == 13){
|
if(e.keyCode == $.ui.keyCode.ENTER){
|
||||||
self.$input.off('keyup', enterHandler);
|
self.$input.off('keyup', enterHandler);
|
||||||
if (!self.quick_add()){
|
if (!self.quick_add()){
|
||||||
self.$input.on('keyup', enterHandler);
|
self.$input.on('keyup', enterHandler);
|
||||||
}
|
}
|
||||||
} else if (e.keyCode == 27 && self._buttons) {
|
} else if (e.keyCode == $.ui.keyCode.ESCAPE && self._buttons) {
|
||||||
self.trigger('close');
|
self.trigger('close');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -88,15 +88,12 @@ var QuickCreate = Widget.extend({
|
|||||||
* Gathers data from the quick create dialog a launch quick_create(data) method
|
* Gathers data from the quick create dialog a launch quick_create(data) method
|
||||||
*/
|
*/
|
||||||
quick_add: function() {
|
quick_add: function() {
|
||||||
var val = this.$input.val();
|
var val = this.$input.val().trim();
|
||||||
if (/^\s*$/.test(val)) {
|
return (val)? this.quick_create({'name': val}) : false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return this.quick_create({'name': val}).always(function() { return true; });
|
|
||||||
},
|
},
|
||||||
|
|
||||||
slow_add: function() {
|
slow_add: function() {
|
||||||
var val = this.$input.val();
|
var val = this.$input.val().trim();
|
||||||
this.slow_create({'name': val});
|
this.slow_create({'name': val});
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -109,7 +106,7 @@ var QuickCreate = Widget.extend({
|
|||||||
.then(function(id) {
|
.then(function(id) {
|
||||||
self.trigger('added', id);
|
self.trigger('added', id);
|
||||||
self.$input.val("");
|
self.$input.val("");
|
||||||
}).fail(function(r, event) {
|
}, function(r, event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
// This will occurs if there are some more fields required
|
// This will occurs if there are some more fields required
|
||||||
self.slow_create(data);
|
self.slow_create(data);
|
||||||
@@ -199,7 +196,7 @@ var Sidebar = Widget.extend({
|
|||||||
start: function() {
|
start: function() {
|
||||||
this._super();
|
this._super();
|
||||||
this.filter = new SidebarFilter(this, this.getParent());
|
this.filter = new SidebarFilter(this, this.getParent());
|
||||||
this.filter.appendTo(this.$el.find('.oe_calendar_filter'));
|
this.filter.appendTo(this.$('.o_calendar_filter'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var SidebarFilter = Widget.extend({
|
var SidebarFilter = Widget.extend({
|
||||||
@@ -216,7 +213,7 @@ var SidebarFilter = Widget.extend({
|
|||||||
var self = this;
|
var self = this;
|
||||||
_.forEach(self.view.all_filters, function(o) {
|
_.forEach(self.view.all_filters, function(o) {
|
||||||
if (_.contains(self.view.now_filter_ids, o.value)) {
|
if (_.contains(self.view.now_filter_ids, o.value)) {
|
||||||
self.$('div.oe_calendar_responsible input[value=' + o.value + ']').prop('checked',o.is_checked);
|
self.$('div.o_calendar_responsible input[value=' + o.value + ']').prop('checked',o.is_checked);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,68 +1,60 @@
|
|||||||
<template>
|
<template>
|
||||||
<t t-name="CalendarView">
|
<t t-name="CalendarView">
|
||||||
<table cellspacing="0" cellpadding="0" border="0" width="100%" class="oe_calendar_table">
|
<div class="row o_calendar_container">
|
||||||
<tr>
|
<div class="o_calendar_view col-sm-9">
|
||||||
<td width="100%">
|
<div class="o_calendar_widget" />
|
||||||
<div class="oe_calendar_view">
|
<div class="o_calendar_buttons"/>
|
||||||
<div class="oe_calendar_widget" />
|
</div>
|
||||||
<div class="oe_calendar_buttons"/>
|
<div class="o_calendar_sidebar_container col-sm-3 hidden-xs"/>
|
||||||
<div class="oe_calendar_qc_placeholder"/>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td class='oe_calendar_sidebar_container'>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</t>
|
|
||||||
|
|
||||||
<t t-name="CalendarView.sidebar">
|
|
||||||
<div class="oe_calendar_sidebar">
|
|
||||||
<div class="oe_calendar_mini" />
|
|
||||||
<div class="oe_calendar_filter">
|
|
||||||
<h3><t t-esc="widget.getParent().color_string"/></h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
<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"> <!-- 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>
|
|
||||||
</t>
|
|
||||||
<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 t-attf-class="color_filter cal_opacity underline_color_#{filters_value.color}" ><t t-esc="filters_value.label" /></span>
|
|
||||||
</t>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
|
|
||||||
<t t-name="CalendarView.buttons">
|
|
||||||
<t t-if="widget.options.action_buttons !== false">
|
|
||||||
<t t-if="widget.is_action_enabled('create') &&
|
|
||||||
((widget.field_widget &&
|
|
||||||
(widget.field_widget.open_popup_add)) ||
|
|
||||||
(!widget.field_widget))">
|
|
||||||
<div class="oe_calendar_buttons">
|
|
||||||
<button type="button" class="oe_calendar_button_new oe_highlight">
|
|
||||||
<t t-esc="widget.options.create_text || _t('Create')"/>
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</t>
|
|
||||||
</t>
|
</t>
|
||||||
</t>
|
|
||||||
|
<t t-name="CalendarView.sidebar">
|
||||||
|
<div class="o_calendar_sidebar">
|
||||||
|
<div class="o_calendar_mini"/>
|
||||||
|
<div class="o_calendar_filter">
|
||||||
|
<h3><t t-esc="widget.getParent().color_string"/></h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
|
||||||
<div t-name="CalendarView.quick_create" class="oe_calendar_quick_create">
|
<t t-name="CalendarView.sidebar.responsible">
|
||||||
<div class="form-group">
|
<div class="o_calendar_all_responsibles">
|
||||||
<label for='name' class='control-label'>Event summary:</label>
|
<div t-foreach="filters" class="o_calendar_responsible" >
|
||||||
<input name='name' class="form-control"/>
|
<t t-if="filters_value.value"><!-- don't display if no value given (or undefined) -->
|
||||||
</div>
|
<input type="checkbox" name="selection" t-att-value="filters_value.value" checked="checked" />
|
||||||
</div>
|
<t t-if="filters_value.value == -1">
|
||||||
|
<span><i t-attf-class="fa fa-users fa-fw o_cal_avatar"></i></span>
|
||||||
|
</t>
|
||||||
|
<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="o_cal_avatar"/>
|
||||||
|
</t>
|
||||||
|
<span t-attf-class="color_filter o_underline_color_#{filters_value.color}" ><t t-esc="filters_value.label" /></span>
|
||||||
|
</t>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<t t-name="CalendarView.buttons">
|
||||||
|
<div class="o_calendar_buttons">
|
||||||
|
<button t-if="widget.options.action_buttons !== false && widget.is_action_enabled('create') && ((widget.field_widget && (widget.field_widget.open_popup_add)) || (!widget.field_widget))" type="button" class="o_calendar_button_new o_highlight"><t t-esc="widget.options.create_text || _t('Create')"/></button>
|
||||||
|
|
||||||
|
<button class="o_calendar_button_prev btn btn-sm btn-primary"><span class="fa fa-arrow-left"/></button>
|
||||||
|
<button class="o_calendar_button_today btn btn-sm btn-primary">Today</button>
|
||||||
|
<button class="o_calendar_button_next btn btn-sm btn-primary"><span class="fa fa-arrow-right"/></button>
|
||||||
|
|
||||||
|
<div class="btn-group btn-group-sm">
|
||||||
|
<button type="button" class="o_calendar_button_day btn btn-sm btn-default">Day</button>
|
||||||
|
<button type="button" class="o_calendar_button_week btn btn-sm btn-default">Week</button>
|
||||||
|
<button type="button" class="o_calendar_button_month btn btn-sm btn-default">Month</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<div t-name="CalendarView.quick_create" class="o_calendar_quick_create">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for='name' class='control-label'>Event summary:</label>
|
||||||
|
<input name='name' class="form-control"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<data>
|
<data>
|
||||||
<template id="assets_backend" name="web_calendar assets" inherit_id="web.assets_backend">
|
<template id="assets_backend" name="web_calendar assets" inherit_id="web.assets_backend">
|
||||||
<xpath expr="." position="inside">
|
<xpath expr="." position="inside">
|
||||||
<link rel="stylesheet" href="/web_calendar/static/src/css/web_fullcalendar.css"/>
|
<link rel="stylesheet" href="/web_calendar/static/src/less/web_calendar.less"/>
|
||||||
<link rel="stylesheet" href="/web_calendar/static/lib/fullcalendar/css/fullcalendar.css"/>
|
<link rel="stylesheet" href="/web_calendar/static/lib/fullcalendar/css/fullcalendar.css"/>
|
||||||
|
|
||||||
<script type="text/javascript" src="/web_calendar/static/lib/fullcalendar/js/fullcalendar.js"></script>
|
<script type="text/javascript" src="/web_calendar/static/lib/fullcalendar/js/fullcalendar.js"></script>
|
||||||
|
|||||||
Reference in New Issue
Block a user