我尝试构建一个名为schedule的新view_type,用fullcalendar 2.x管理一个时间表 我在v8实例上有一个功能poc,但是移植到v10会给我带来问题。
/*---------------------------------------------------------
* OpenERP web_schedule
*---------------------------------------------------------*/
odoo.define('web_schedule.ScheduleView', function (require) {
"use strict";
var core = require('web.core');
var data = require('web.data');
var form_common = require('web.form_common');
var formats = require('web.formats');
var Model = require('web.DataModel');
var time = require('web.time');
var utils = require('web.utils');
var View = require('web.View');
var local_storage = require('web.local_storage');
var CompoundDomain = data.CompoundDomain;
var _t = core._t;
var _lt = core._lt;
var QWeb = core.qweb;
function is_virtual_id(id) {
return typeof id === "string" && id.indexOf('-') >= 0;
}
function isNullOrUndef(value) {
return _.isUndefined(value) || _.isNull(value);
}
var ScheduleView = View.extend({
template: "ScheduleView",
display_name: _lt('Schedule'),
icon: 'fa-calendar',
init: function() {
this._super.apply(this, arguments);
this.shown = $.Deferred();
},
start: function() {
console.log('start');
this.$schedule = this.$el.find("#schedule");
this.shown.done(this._do_show_init.bind(this));
return this._super();
},
_do_show_init: function () {
console.log('_do_show_init')
this.init_calendar().then(function() {
$(window).trigger('resize');
});
},
init_calendar: function() {
console.log('init calendar')
var defs = [];
this.$schedule.fullCalendar(this.get_fc_init_options());
return $.when.apply($, defs);
},
get_fc_init_options: function () {
console.log('get_fc_init_options')
},
});
core.view_registry.add('schedule', ScheduleView);
return ScheduleView;
});
此代码改编自web_calendar.js,这是管理Odoo日历的核心模块。
我的视图被调用,我的控制台没有错误,除了使用localtime和moment.js的折旧警告,但没有任何效果。
我的代码只返回console.log('start');
,而不会返回this.shown.done(this._do_show_init.bind(this));
一个想法?