[IMP] web_view_calendar_list: black, isort, prettier

pull/2215/head
Enric Tobella 2021-06-21 15:36:41 +02:00 committed by Olga Marco
parent 8863c66381
commit 2beeb8b838
8 changed files with 160 additions and 161 deletions

View File

@ -2,17 +2,13 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{ {
'name': 'Web View Calendar List', "name": "Web View Calendar List",
'summary': """ "summary": """
Show calendars as a List""", Show calendars as a List""",
'version': '12.0.1.0.0', "version": "12.0.1.0.0",
'license': 'AGPL-3', "license": "AGPL-3",
'author': 'Creu Blanca,Odoo Community Association (OCA)', "author": "Creu Blanca,Odoo Community Association (OCA)",
'website': 'https://github.com/OCA/web', "website": "https://github.com/OCA/web",
'depends': [ "depends": ["web",],
'web', "data": ["templates/assets.xml",],
],
'data': [
'templates/assets.xml',
],
} }

View File

@ -5,8 +5,6 @@ from odoo import fields, models
class IrActionsActWindowView(models.Model): class IrActionsActWindowView(models.Model):
_inherit = 'ir.actions.act_window.view' _inherit = "ir.actions.act_window.view"
view_mode = fields.Selection( view_mode = fields.Selection(selection_add=[("calendar_list", "Calendar List")])
selection_add=[('calendar_list', 'Calendar List')]
)

View File

@ -5,8 +5,6 @@ from odoo import fields, models
class IrUiView(models.Model): class IrUiView(models.Model):
_inherit = 'ir.ui.view' _inherit = "ir.ui.view"
type = fields.Selection( type = fields.Selection(selection_add=[("calendar_list", "Calendar List")])
selection_add=[('calendar_list', 'Calendar List')]
)

View File

@ -1,11 +1,9 @@
odoo.define('web_view_calendar_list.CalendarListController', function (require) { odoo.define("web_view_calendar_list.CalendarListController", function(require) {
"use strict"; "use strict";
var CalendarController = require('web.CalendarController'); var CalendarController = require("web.CalendarController");
var CalendarListController = CalendarController.extend({ var CalendarListController = CalendarController.extend({});
});
return CalendarListController; return CalendarListController;
}); });

View File

@ -1,59 +1,57 @@
odoo.define('web_view_calendar_list.CalendarListModel', function (require) { odoo.define("web_view_calendar_list.CalendarListModel", function(require) {
"use strict"; "use strict";
var CalendarModel = require('web.CalendarModel'); var CalendarModel = require("web.CalendarModel");
var AppointmentModel= CalendarModel.extend({ var AppointmentModel = CalendarModel.extend({
_recordToCalendarEvent: function (evt) { _recordToCalendarEvent: function(evt) {
var date_start = false; var date_start = false;
var date_stop = false; var date_stop = false;
var date_delay = evt[this.mapping.date_delay] || 1.0, var date_delay = evt[this.mapping.date_delay] || 1.0,
all_day = this.fields[ all_day =
this.mapping.date_start this.fields[this.mapping.date_start].type === "date" ||
].type === 'date' || this.mapping.all_day && (this.mapping.all_day && evt[this.mapping.all_day]) ||
evt[this.mapping.all_day] || false, false,
the_title = '', the_title = "",
attendees = []; attendees = [];
if (all_day) { if (all_day) {
date_start = evt[this.mapping.date_start].clone().startOf( date_start = evt[this.mapping.date_start].clone().startOf("day");
'day'); date_stop = this.mapping.date_stop
date_stop = this.mapping.date_stop ? evt[ ? evt[this.mapping.date_stop].clone().startOf("day")
this.mapping.date_stop].clone().startOf('day') : null; : null;
} else { } else {
date_start = evt[this.mapping.date_start].clone(); date_start = evt[this.mapping.date_start].clone();
date_stop = this.mapping.date_stop ? evt[ date_stop = this.mapping.date_stop
this.mapping.date_stop].clone() : null; ? evt[this.mapping.date_stop].clone()
: null;
} }
if (!date_stop && date_delay) { if (!date_stop && date_delay) {
date_stop = date_start.clone().add(date_delay, 'hours'); date_stop = date_start.clone().add(date_delay, "hours");
} }
if (!all_day) { if (!all_day) {
date_start.add( date_start.add(this.getSession().getTZOffset(date_start), "minutes");
this.getSession().getTZOffset(date_start), 'minutes'); date_stop.add(this.getSession().getTZOffset(date_stop), "minutes");
date_stop.add(
this.getSession().getTZOffset(date_stop), 'minutes');
} }
if (this.mapping.all_day && evt[this.mapping.all_day]) { if (this.mapping.all_day && evt[this.mapping.all_day]) {
date_stop.add(1, 'days'); date_stop.add(1, "days");
} }
return { return {
'record': evt, record: evt,
'start': date_start, start: date_start,
'end': date_stop, end: date_stop,
'r_start': date_start, r_start: date_start,
'r_end': date_stop, r_end: date_stop,
'title': the_title, title: the_title,
'allDay': all_day, allDay: all_day,
'id': evt.id, id: evt.id,
'attendees':attendees, attendees: attendees,
}; };
}, },
}); });
return AppointmentModel; return AppointmentModel;
}); });

View File

@ -1,18 +1,18 @@
odoo.define('web_view_calendar_list.CalendarListRenderer', function (require) { odoo.define("web_view_calendar_list.CalendarListRenderer", function(require) {
"use strict"; "use strict";
var CalendarRenderer = require('web.CalendarRenderer'); var CalendarRenderer = require("web.CalendarRenderer");
var core = require('web.core'); var core = require("web.core");
var _t = core._t; var _t = core._t;
var scales = { var scales = {
day: 'listDay', day: "listDay",
week: 'listWeek', week: "listWeek",
month: 'listMonth', month: "listMonth",
}; };
var AppointmentRenderer= CalendarRenderer.extend({ var AppointmentRenderer = CalendarRenderer.extend({
_initCalendar: function () { _initCalendar: function() {
var self = this; var self = this;
this.$calendar = this.$(".o_calendar_widget"); this.$calendar = this.$(".o_calendar_widget");
@ -24,65 +24,69 @@ odoo.define('web_view_calendar_list.CalendarListRenderer', function (require) {
// Documentation here : http://arshaw.com/fullcalendar/docs/ // Documentation here : http://arshaw.com/fullcalendar/docs/
var fc_options = $.extend({}, this.state.fc_options, { var fc_options = $.extend({}, this.state.fc_options, {
eventDrop: function (event) { eventDrop: function(event) {
self.trigger_up('dropRecord', event); self.trigger_up("dropRecord", event);
}, },
eventResize: function (event) { eventResize: function(event) {
self.trigger_up('updateRecord', event); self.trigger_up("updateRecord", event);
}, },
eventClick: function (event) { eventClick: function(event) {
self.trigger_up('openEvent', event); self.trigger_up("openEvent", event);
self.$calendar.fullCalendar('unselect'); self.$calendar.fullCalendar("unselect");
}, },
select: function (target_date, end_date, event, _js_event, _view) { select: function(target_date, end_date, event, _js_event, _view) {
var data = {'start': target_date, 'end': end_date}; var data = {start: target_date, end: end_date};
if (self.state.context.default_name) { if (self.state.context.default_name) {
data.title = self.state.context.default_name; data.title = self.state.context.default_name;
} }
self.trigger_up('openCreate', data); self.trigger_up("openCreate", data);
self.$calendar.fullCalendar('unselect'); self.$calendar.fullCalendar("unselect");
}, },
eventRender: function (event, element) { eventRender: function(event, element) {
var $render = $(self._eventRender(event)); var $render = $(self._eventRender(event));
event.title = $render.find('.o_field_type_char:first').text(); event.title = $render.find(".o_field_type_char:first").text();
element.find('.fc-list-item-title').html($render.html()); element.find(".fc-list-item-title").html($render.html());
element.addClass($render.attr('class')); element.addClass($render.attr("class"));
var display_hour = ''; var display_hour = "";
if (!event.allDay) { if (!event.allDay) {
var start = event.r_start || event.start; var start = event.r_start || event.start;
var end = event.r_end || event.end; var end = event.r_end || event.end;
var timeFormat = ( var timeFormat =
_t.database.parameters.time_format.search( _t.database.parameters.time_format.search("%H") != -1
"%H" ? "HH:mm"
) != -1 ? 'HH:mm': 'h:mma' : "h:mma";
); display_hour =
display_hour = start.format( start.format(timeFormat) + " - " + end.format(timeFormat);
timeFormat if (display_hour === "00:00 - 00:00") {
) + ' - ' + end.format(timeFormat); display_hour = _t("All day");
if (display_hour === '00:00 - 00:00') {
display_hour = _t('All day');
} }
} }
element.find('.fc-list-item-time').text(display_hour); element.find(".fc-list-item-time").text(display_hour);
}, },
// Dirty hack to ensure a correct first render // Dirty hack to ensure a correct first render
eventAfterAllRender: function () { eventAfterAllRender: function() {
$(window).trigger('resize'); $(window).trigger("resize");
}, },
viewRender: function (view) { viewRender: function(view) {
// Compute mode from view.name which is either 'month', // Compute mode from view.name which is either 'month',
// 'agendaWeek' or 'agendaDay' // 'agendaWeek' or 'agendaDay'
var mode = view.name === 'listMonth' ? 'month' : (view.name === 'listWeek' ? 'week' : 'day'); var mode =
view.name === "listMonth"
? "month"
: view.name === "listWeek"
? "week"
: "day";
// Compute title: in week mode, display the week number // Compute title: in week mode, display the week number
var title = mode === 'week' ? _t( var title =
'Week ' mode === "week"
) + view.intervalStart.week() : view.title; ? _t("Week ") + view.intervalStart.week()
self.trigger_up('viewUpdated', { : view.title;
self.trigger_up("viewUpdated", {
mode: mode, mode: mode,
title: title, title: title,
}); });
}, },
height: 'parent', height: "parent",
unselectAuto: false, unselectAuto: false,
locale: locale, locale: locale,
/* Reset locale when fullcalendar has already been /* Reset locale when fullcalendar has already been
@ -97,74 +101,71 @@ odoo.define('web_view_calendar_list.CalendarListRenderer', function (require) {
that is not dependant on the class, so we cannot modify it without that is not dependant on the class, so we cannot modify it without
overwriting all the class overwriting all the class
*/ */
_render: function () { _render: function() {
var $calendar = this.$calendar; var $calendar = this.$calendar;
var $fc_view = $calendar.find('.fc-view'); var $fc_view = $calendar.find(".fc-view");
var scrollPosition = $fc_view.scrollLeft(); var scrollPosition = $fc_view.scrollLeft();
var scrollTop = this.$calendar.find('.fc-scroller').scrollTop(); var scrollTop = this.$calendar.find(".fc-scroller").scrollTop();
$fc_view.scrollLeft(0); $fc_view.scrollLeft(0);
$calendar.fullCalendar('unselect'); $calendar.fullCalendar("unselect");
if (scales[this.state.scale] !== $calendar.data( if (
'fullCalendar' scales[this.state.scale] !==
).getView().type) { $calendar.data("fullCalendar").getView().type
$calendar.fullCalendar('changeView', scales[this.state.scale]); ) {
$calendar.fullCalendar("changeView", scales[this.state.scale]);
} }
if (this.target_date !== this.state.target_date.toString()) { if (this.target_date !== this.state.target_date.toString()) {
$calendar.fullCalendar( $calendar.fullCalendar("gotoDate", moment(this.state.target_date));
'gotoDate', moment(this.state.target_date));
this.target_date = this.state.target_date.toString(); this.target_date = this.state.target_date.toString();
} }
this.$small_calendar.datepicker( this.$small_calendar
"setDate", this.state.highlight_date.toDate() .datepicker("setDate", this.state.highlight_date.toDate())
).find('.o_selected_range').removeClass('o_color o_selected_range'); .find(".o_selected_range")
.removeClass("o_color o_selected_range");
var $a = false; var $a = false;
switch (this.state.scale) { switch (this.state.scale) {
case 'month': case "month":
$a = this.$small_calendar.find('td a'); $a = this.$small_calendar.find("td a");
break; break;
case 'week': case "week":
$a = this.$small_calendar.find( $a = this.$small_calendar.find("tr:has(.ui-state-active) a");
'tr:has(.ui-state-active) a');
break; break;
case 'day': case "day":
$a = this.$small_calendar.find('a.ui-state-active'); $a = this.$small_calendar.find("a.ui-state-active");
break; break;
} }
$a.addClass('o_selected_range'); $a.addClass("o_selected_range");
setTimeout(function () { setTimeout(function() {
$a.not('.ui-state-active').addClass('o_color'); $a.not(".ui-state-active").addClass("o_color");
}); });
$fc_view.scrollLeft(scrollPosition); $fc_view.scrollLeft(scrollPosition);
var fullWidth = this.state.fullWidth; var fullWidth = this.state.fullWidth;
this.$('.o_calendar_sidebar_toggler') this.$(".o_calendar_sidebar_toggler")
.toggleClass('fa-close', !fullWidth) .toggleClass("fa-close", !fullWidth)
.toggleClass('fa-chevron-left', fullWidth) .toggleClass("fa-chevron-left", fullWidth)
.attr( .attr("title", fullWidth ? _("Open Sidebar") : _("Close Sidebar"));
'title', this.$sidebar_container.toggleClass("o_sidebar_hidden", fullWidth);
fullWidth ? _('Open Sidebar') : _('Close Sidebar')); this.$sidebar.toggleClass("o_hidden", fullWidth);
this.$sidebar_container.toggleClass('o_sidebar_hidden', fullWidth);
this.$sidebar.toggleClass('o_hidden', fullWidth);
this._renderFilters(); this._renderFilters();
this.$calendar.appendTo('body'); this.$calendar.appendTo("body");
if (scrollTop) { if (scrollTop) {
this.$calendar.fullCalendar('reinitView'); this.$calendar.fullCalendar("reinitView");
} else { } else {
this.$calendar.fullCalendar('render'); this.$calendar.fullCalendar("render");
} }
this._renderEvents(); this._renderEvents();
this.$calendar.prependTo(this.$('.o_calendar_view')); this.$calendar.prependTo(this.$(".o_calendar_view"));
return $.when(); return $.when();
}, },
}); });
return AppointmentRenderer; return AppointmentRenderer;
}); });

View File

@ -1,20 +1,18 @@
odoo.define('web_view_calendar_list.CalendarListView', function (require) { odoo.define("web_view_calendar_list.CalendarListView", function(require) {
"use strict"; "use strict";
var CalendarView = require('web.CalendarView'); var CalendarView = require("web.CalendarView");
var core = require('web.core'); var core = require("web.core");
var CalendarListController = require( var CalendarListController = require("web_view_calendar_list.CalendarListController");
'web_view_calendar_list.CalendarListController'); var CalendarListModel = require("web_view_calendar_list.CalendarListModel");
var CalendarListModel = require('web_view_calendar_list.CalendarListModel'); var CalendarListRenderer = require("web_view_calendar_list.CalendarListRenderer");
var CalendarListRenderer = require( var view_registry = require("web.view_registry");
'web_view_calendar_list.CalendarListRenderer');
var view_registry = require('web.view_registry');
var _lt = core._lt; var _lt = core._lt;
var CalendarListView = CalendarView.extend({ var CalendarListView = CalendarView.extend({
display_name: _lt('Calendar List'), display_name: _lt("Calendar List"),
icon: 'fa-calendar-check-o', icon: "fa-calendar-check-o",
config: { config: {
Model: CalendarListModel, Model: CalendarListModel,
Controller: CalendarListController, Controller: CalendarListController,
@ -22,9 +20,7 @@ odoo.define('web_view_calendar_list.CalendarListView', function (require) {
}, },
}); });
view_registry view_registry.add("calendar_list", CalendarListView);
.add('calendar_list', CalendarListView);
return CalendarListView; return CalendarListView;
}); });

View File

@ -1,14 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8" ?>
<odoo> <odoo>
<template id="assets_backend" <template
id="assets_backend"
name="Backend Assets (used in backend interface)" name="Backend Assets (used in backend interface)"
inherit_id="web.assets_backend"> inherit_id="web.assets_backend"
>
<xpath expr="." position="inside"> <xpath expr="." position="inside">
<script type="text/javascript" src="/web_view_calendar_list/static/src/js/calendar_list_renderer.js"/> <script
<script type="text/javascript" src="/web_view_calendar_list/static/src/js/calendar_list_model.js"/> type="text/javascript"
<script type="text/javascript" src="/web_view_calendar_list/static/src/js/calendar_list_controller.js"/> src="/web_view_calendar_list/static/src/js/calendar_list_renderer.js"
<script type="text/javascript" src="/web_view_calendar_list/static/src/js/calendar_list_view.js"/> />
<script
type="text/javascript"
src="/web_view_calendar_list/static/src/js/calendar_list_model.js"
/>
<script
type="text/javascript"
src="/web_view_calendar_list/static/src/js/calendar_list_controller.js"
/>
<script
type="text/javascript"
src="/web_view_calendar_list/static/src/js/calendar_list_view.js"
/>
</xpath> </xpath>
</template> </template>
</odoo> </odoo>