Support dynamic default time from another field

This commit is contained in:
Akim Juillerat
2024-07-16 21:03:12 +02:00
parent 65bdd44cf8
commit 3af6b1d7f4
7 changed files with 548 additions and 10 deletions

View File

@@ -2,7 +2,7 @@
/* Copyright 2024 Camptocamp
* License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) */
import {DatePicker, DateTimePicker} from "@web/core/datepicker/datepicker";
import {DateTimePicker} from "@web/core/datepicker/datepicker";
import {patch} from "@web/core/utils/patch";
patch(DateTimePicker.prototype, "DateTimePickerDefaultTime", {
@@ -23,7 +23,7 @@ patch(DateTimePicker.prototype, "DateTimePickerDefaultTime", {
},
});
DateTimePicker.props = _.extend({}, DatePicker.props, {
DateTimePicker.props = _.extend({}, DateTimePicker.props, {
defaultTime: {
type: Object,
shape: {

View File

@@ -0,0 +1,42 @@
/** @odoo-module **/
/* Copyright 2024 Camptocamp
* License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) */
import {DateTimeField} from "@web/views/fields/datetime/datetime_field";
import {patch} from "@web/core/utils/patch";
patch(DateTimeField.prototype, "DateTimeFieldDefaultTime", {
get defaultTime() {
if (typeof this.props.defaultTime === "string") {
return this.props.record.data[this.props.defaultTime];
}
return this.props.defaultTime;
},
});
DateTimeField.props = _.extend({}, DateTimeField.props, {
defaultTime: {
type: [
String,
{
type: Object,
shape: {
hour: Number,
minute: Number,
second: Number,
},
optional: true,
},
],
optional: true,
},
});
const super_extractProps = DateTimeField.extractProps;
DateTimeField.extractProps = ({attrs}) => {
return {
...super_extractProps({attrs}),
defaultTime: attrs.options.defaultTime,
};
};

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates xml:space="preserve">
<t t-inherit="web.DateTimeField" t-inherit-mode="extension" owl="1">
<xpath expr="//DateTimePicker" position="attributes">
<attribute name="defaultTime">defaultTime</attribute>
</xpath>
</t>
</templates>