From e1be2a19c667c828b6c7780282ba73736626a8d4 Mon Sep 17 00:00:00 2001 From: Achilles Rasquinha Date: Sat, 31 Mar 2018 12:57:24 +0530 Subject: [PATCH] Added Quick Edit --- frappe/client.py | 4 ++- frappe/public/js/frappe/chat.js | 63 +++++++++++++++++++++++++++++---- 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/frappe/client.py b/frappe/client.py index 4f02ff78be..80c5a885bb 100644 --- a/frappe/client.py +++ b/frappe/client.py @@ -185,7 +185,9 @@ def save(doc): if isinstance(doc, string_types): doc = json.loads(doc) - doc = frappe.get_doc(doc).save() + doc = frappe.get_doc(doc) + doc.save() + return doc.as_dict() @frappe.whitelist() diff --git a/frappe/public/js/frappe/chat.js b/frappe/public/js/frappe/chat.js index 9877930052..16907f52c2 100644 --- a/frappe/public/js/frappe/chat.js +++ b/frappe/public/js/frappe/chat.js @@ -178,11 +178,57 @@ frappe.datetime.compare = (a, b) => { } // frappe.quick_edit -frappe.quick_edit = (doctype, docname) => { - const dialog = new frappe.ui.Dialog({ - title: __(`Edit ${doctype}`) +frappe.quick_edit = (doctype, docname, fn) => { + return new Promise(resolve => { + frappe.model.with_doctype(doctype, () => { + frappe.db.get_doc(doctype, docname).then(doc => { + const meta = frappe.get_meta(doctype) + const fields = meta.fields + const required = fields.filter(f => f.reqd || f.bold && !f.read_only) + + const dialog = new frappe.ui.Dialog({ + title: __(`Edit ${doctype} (${docname})`), + fields: required, + action: { + primary: { + label: __("Save"), + onsubmit: (values) => { + frappe.call('frappe.client.save', + { doc: { doctype: doctype, docname: docname, ...doc, ...values } }) + .then(r => { + if ( fn ) + fn(r.message) + + resolve(r.message) + }) + + dialog.hide() + } + }, + secondary: { + label: __("Discard") + } + } + }) + dialog.set_values(doc) + + const $element = $(dialog.body) + $element.append(` +
+ +
+ `) + $element.find('.qe-fp').click(() => { + dialog.hide() + frappe.set_route(`Form/${doctype}/${docname}`) + }) + + dialog.show() + }) + }) }) - dialog.show() } // frappe._ @@ -2294,13 +2340,16 @@ class extends Component { onclick ( ) { const { props } = this - frappe.quick_edit("Chat Message", props.name) + if ( props.user === frappe.session.user ) { + frappe.quick_edit("Chat Message", props.name, (values) => { + + }) + } } render ( ) { const { props } = this - - const creation = props.creation.format('hh:mm A') + const creation = props.creation.format('hh:mm A') const me = props.user === frappe.session.user const read = !frappe._.is_empty(props.seen) && !props.seen.includes(frappe.session.user)