refactor: move call to fetch doctype fields to server-side
This commit is contained in:
parent
0d43ea5ebb
commit
b5b8c5474a
@ -18,7 +18,27 @@ frappe.ui.form.on('Patient History Settings', {
|
|||||||
if (doc.selected_fields)
|
if (doc.selected_fields)
|
||||||
document_fields = (JSON.parse(doc.selected_fields)).map(f => f.fieldname);
|
document_fields = (JSON.parse(doc.selected_fields)).map(f => f.fieldname);
|
||||||
|
|
||||||
let doctype_fields = frm.events.get_doctype_fields(frm, doc.document_type, document_fields);
|
frm.call({
|
||||||
|
method: 'get_doctype_fields',
|
||||||
|
doc: frm.doc,
|
||||||
|
args: {
|
||||||
|
document_type: doc.document_type,
|
||||||
|
fields: document_fields
|
||||||
|
},
|
||||||
|
freeze: true,
|
||||||
|
callback: function(r) {
|
||||||
|
if (r.message) {
|
||||||
|
let doctype = 'Patient History Custom Document Type';
|
||||||
|
if (standard)
|
||||||
|
doctype = 'Patient History Standard Document Type';
|
||||||
|
|
||||||
|
frm.events.show_field_selector_dialog(frm, doc, doctype, r.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
show_field_selector_dialog: function(frm, doc, doctype, doc_fields) {
|
||||||
let d = new frappe.ui.Dialog({
|
let d = new frappe.ui.Dialog({
|
||||||
title: __('{0} Fields', [__(doc.document_type)]),
|
title: __('{0} Fields', [__(doc.document_type)]),
|
||||||
fields: [
|
fields: [
|
||||||
@ -26,7 +46,7 @@ frappe.ui.form.on('Patient History Settings', {
|
|||||||
label: __('Select Fields'),
|
label: __('Select Fields'),
|
||||||
fieldtype: 'MultiCheck',
|
fieldtype: 'MultiCheck',
|
||||||
fieldname: 'fields',
|
fieldname: 'fields',
|
||||||
options: doctype_fields,
|
options: doc_fields,
|
||||||
columns: 2
|
columns: 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -49,9 +69,6 @@ frappe.ui.form.on('Patient History Settings', {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let doctype = 'Patient History Custom Document Type';
|
|
||||||
if (standard)
|
|
||||||
doctype = 'Patient History Standard Document Type';
|
|
||||||
|
|
||||||
d.refresh();
|
d.refresh();
|
||||||
frappe.model.set_value(doctype, doc.name, 'selected_fields', JSON.stringify(selected_fields));
|
frappe.model.set_value(doctype, doc.name, 'selected_fields', JSON.stringify(selected_fields));
|
||||||
@ -59,26 +76,6 @@ frappe.ui.form.on('Patient History Settings', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
d.show();
|
d.show();
|
||||||
},
|
|
||||||
|
|
||||||
get_doctype_fields(frm, document_type, fields) {
|
|
||||||
let multiselect_fields = [];
|
|
||||||
|
|
||||||
frappe.model.with_doctype(document_type, () => {
|
|
||||||
// get doctype fields
|
|
||||||
frappe.get_doc('DocType', document_type).fields.forEach(field => {
|
|
||||||
if (!in_list(frappe.model.no_value_type, field.fieldtype) ||
|
|
||||||
in_list(frappe.model.table_fields, field.fieldtype) && !field.hidden) {
|
|
||||||
multiselect_fields.push({
|
|
||||||
label: field.label,
|
|
||||||
value: field.fieldname,
|
|
||||||
checked: in_list(fields, field.fieldname)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
return multiselect_fields;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
|
import json
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import cstr
|
from frappe.utils import cstr
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
@ -24,6 +25,21 @@ class PatientHistorySettings(Document):
|
|||||||
frappe.throw(_('Row #{0}: Field {1} in Document Type {2} is not a Date / Datetime field.').format(
|
frappe.throw(_('Row #{0}: Field {1} in Document Type {2} is not a Date / Datetime field.').format(
|
||||||
entry.idx, frappe.bold(entry.date_fieldname), frappe.bold(entry.document_type)))
|
entry.idx, frappe.bold(entry.date_fieldname), frappe.bold(entry.document_type)))
|
||||||
|
|
||||||
|
def get_doctype_fields(self, document_type, fields):
|
||||||
|
multicheck_fields = []
|
||||||
|
doc_fields = frappe.get_meta(document_type).fields
|
||||||
|
|
||||||
|
for field in doc_fields:
|
||||||
|
if field.fieldtype not in frappe.model.no_value_fields or \
|
||||||
|
field.fieldtype in frappe.model.table_fields and not field.hidden:
|
||||||
|
multicheck_fields.append({
|
||||||
|
'label': field.label,
|
||||||
|
'value': field.fieldname,
|
||||||
|
'checked': 1 if field.fieldname in fields else 0
|
||||||
|
})
|
||||||
|
|
||||||
|
return multicheck_fields
|
||||||
|
|
||||||
|
|
||||||
def create_medical_record(doc, method=None):
|
def create_medical_record(doc, method=None):
|
||||||
medical_record_required = validate_medical_record_required(doc)
|
medical_record_required = validate_medical_record_required(doc)
|
||||||
@ -100,7 +116,6 @@ def get_date_field(doctype):
|
|||||||
|
|
||||||
|
|
||||||
def get_patient_history_fields(doc):
|
def get_patient_history_fields(doc):
|
||||||
import json
|
|
||||||
dt = get_patient_history_config_dt(doc.doctype)
|
dt = get_patient_history_config_dt(doc.doctype)
|
||||||
patient_history_fields = frappe.db.get_value(dt, { 'document_type': doc.doctype }, 'selected_fields')
|
patient_history_fields = frappe.db.get_value(dt, { 'document_type': doc.doctype }, 'selected_fields')
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user