web/web_view_calendar_column/static/src/js/calendar_model.js

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;
},
});
});