fix: parse value before setting display status

This commit is contained in:
Shariq Ansari 2022-06-14 14:46:14 +05:30
parent c1df1b1f18
commit 0d6891afbf
5 changed files with 30 additions and 5 deletions

View file

@ -72,9 +72,12 @@ frappe.ui.form.Control = class BaseControl {
status = "Read";
}
let value = this.value || this.get_model_value();
value = this.get_parsed_value(value);
if (
status === "Read" &&
is_null(this.value) &&
is_null(value) &&
!in_list(["HTML", "Image", "Button"], this.df.fieldtype)
) status = "None";
@ -93,9 +96,12 @@ frappe.ui.form.Control = class BaseControl {
}
}
let value = frappe.model.get_value(this.doctype, this.docname, this.df.fieldname);
value = this.get_parsed_value(value);
// hide if no value
if (this.doctype && status==="Read" && !this.only_input
&& is_null(frappe.model.get_value(this.doctype, this.docname, this.df.fieldname))
&& is_null(value)
&& !in_list(["HTML", "Image", "Button"], this.df.fieldtype)) {
// eslint-disable-next-line
@ -159,14 +165,18 @@ frappe.ui.form.Control = class BaseControl {
return this.doc[this.df.fieldname];
}
}
get_parsed_value(value) {
if (this.parse) {
value = this.parse(value);
}
return value;
}
set_value(value, force_set_value=false) {
return this.validate_and_set_in_model(value, null, force_set_value);
}
parse_validate_and_set_in_model(value, e) {
if(this.parse) {
value = this.parse(value);
}
value = this.get_parsed_value(value);
return this.validate_and_set_in_model(value, e);
}
validate_and_set_in_model(value, e, force_set_value=false) {

View file

@ -140,6 +140,9 @@ frappe.ui.form.ControlDate = class ControlDate extends frappe.ui.form.ControlDat
}
parse(value) {
if (value) {
if (value == "Invalid date") {
return "";
}
return frappe.datetime.user_to_str(value, false, true);
}
}

View file

@ -40,6 +40,9 @@ frappe.ui.form.ControlDatetime = class ControlDatetime extends frappe.ui.form.Co
value = frappe.datetime.convert_to_system_tz(value, true);
}
if (value == "Invalid date") {
value = "";
}
return value;
}
}

View file

@ -109,6 +109,12 @@ frappe.ui.form.ControlDuration = class ControlDuration extends frappe.ui.form.Co
return cint(this.value);
}
parse(value) {
if (!value) {
return "";
}
}
refresh_input() {
super.refresh_input();
this.set_duration_options();

View file

@ -82,6 +82,9 @@ frappe.ui.form.ControlTime = class ControlTime extends frappe.ui.form.ControlDat
}
parse(value) {
if (value) {
if (value == "Invalid date") {
value = "";
}
return frappe.datetime.user_to_str(value, true);
}
}