mirror of https://github.com/OCA/web.git
58 lines
2.1 KiB
JavaScript
58 lines
2.1 KiB
JavaScript
odoo.define('web_view_calendar_column.CalendarModel', function (require) {
|
|
"use strict";
|
|
|
|
var CalendarModel = require('web.CalendarModel');
|
|
var session = require('web.session');
|
|
var core = require('web.core');
|
|
var qweb = core.qweb;
|
|
var _t = core._t;
|
|
|
|
CalendarModel.include({
|
|
load: function (params) {
|
|
this.fieldColumn = params.fieldColumn;
|
|
this.forceColumns = params.forceColumns;
|
|
return this._super.apply(this, arguments);
|
|
},
|
|
_loadCalendar: function () {
|
|
var self = this;
|
|
return this._super.apply(this, arguments).then(function () {
|
|
self._compute_columns(self.data, self.data.data);
|
|
});
|
|
},
|
|
_compute_columns: function (element, events) {
|
|
if (this.fieldColumn && this.forceColumns) {
|
|
this.data.columns = this.forceColumns;
|
|
}
|
|
else if (this.fieldColumn) {
|
|
var fieldName = this.fieldColumn;
|
|
var columns = {}
|
|
var elements = events;
|
|
_.each(events, function (event) {
|
|
var value = event.record[fieldName];
|
|
var key = _.isArray(value) ? value[0] : value;
|
|
columns[key] = _.isArray(value) ? value[1] : value;
|
|
});
|
|
this.data.columns = columns;
|
|
}
|
|
},
|
|
_recordToCalendarEvent: function (evt) {
|
|
var result = this._super.apply(this, arguments);
|
|
var value = evt[this.fieldColumn];
|
|
result.resourceId = _.isArray(value) ? value[0] : value;
|
|
return result;
|
|
},
|
|
_getFullCalendarOptions: function () {
|
|
var result = this._super.apply(this, arguments);
|
|
if (this.fieldColumn)
|
|
result.resources = [];
|
|
return result;
|
|
},
|
|
calendarEventToRecord: function (event) {
|
|
var result = this._super.apply(this, arguments);
|
|
if (event.resourceId)
|
|
result[this.fieldColumn] = event.resourceId;
|
|
return result;
|
|
},
|
|
});
|
|
});
|