refactor: renamed web_form scripts
old > new web_form.js webform_script.js web_form_class.js web_form.js web_form_class_list.js web_form_list.js
This commit is contained in:
parent
66cb28e797
commit
d352ec0076
5 changed files with 243 additions and 243 deletions
|
|
@ -312,9 +312,9 @@
|
|||
],
|
||||
"js/web_form.min.js": [
|
||||
"public/js/frappe/misc/datetime.js",
|
||||
"public/js/frappe/web_form/web_form_class.js",
|
||||
"public/js/frappe/web_form/web_form_list_class.js",
|
||||
"public/js/frappe/web_form/web_form.js",
|
||||
"public/js/frappe/web_form/web_form_list.js",
|
||||
"public/js/frappe/web_form/webform_script.js",
|
||||
"public/js/lib/datepicker/datepicker.min.js",
|
||||
"public/js/lib/datepicker/datepicker.en.js"
|
||||
],
|
||||
|
|
|
|||
|
|
@ -1,100 +1,158 @@
|
|||
frappe.ready(function() {
|
||||
const { web_form_doctype, doc_name, web_form_name } = web_form_settings;
|
||||
const wrapper = $(".web-form-wrapper");
|
||||
frappe.provide("frappe.ui");
|
||||
frappe.provide("frappe.web_form");
|
||||
|
||||
if (web_form_settings.login_required && frappe.session.user === "Guest") show_login_prompt();
|
||||
else if (web_form_settings.is_list) show_grid();
|
||||
else show_form();
|
||||
window.web_form = null;
|
||||
|
||||
setTimeout(() => {
|
||||
document.querySelector("body").style.display = "block";
|
||||
frappe.init_client_script && frappe.init_client_script();
|
||||
frappe.web_form.after_load && frappe.web_form.after_load();
|
||||
}, 500);
|
||||
frappe.ui.WebForm = class WebForm extends frappe.ui.FieldGroup {
|
||||
constructor(opts) {
|
||||
super();
|
||||
Object.assign(this, opts);
|
||||
window.web_form = this;
|
||||
frappe.web_form = this;
|
||||
}
|
||||
|
||||
function show_login_prompt() {
|
||||
const login_required = new frappe.ui.Dialog({
|
||||
title: __("Not Permitted"),
|
||||
primary_action_label: __("Login"),
|
||||
primary_action: () => {
|
||||
window.location.replace('/login?redirect-to=/' + web_form_name)
|
||||
make() {
|
||||
super.make();
|
||||
this.set_field_values();
|
||||
if (this.introduction_text) this.set_form_description(this.introduction_text);
|
||||
if (this.allow_print && !this.is_new) this.setup_print_button();
|
||||
if (this.allow_delete && !this.is_new) this.setup_delete_button();
|
||||
if (this.is_new) this.setup_cancel_button();
|
||||
this.setup_primary_action();
|
||||
$(".link-btn").remove();
|
||||
}
|
||||
|
||||
on(fieldname, handler) {
|
||||
let field = this.fields_dict[fieldname];
|
||||
field.input.addEventListener("focus", () =>
|
||||
handler(field, field.value)
|
||||
);
|
||||
}
|
||||
|
||||
set_field_values() {
|
||||
if (this.doc_name) this.set_values(this.doc);
|
||||
else return;
|
||||
}
|
||||
|
||||
set_form_description(intro) {
|
||||
let intro_wrapper = document.getElementById('introduction');
|
||||
intro_wrapper.innerHTML = intro;
|
||||
}
|
||||
|
||||
add_button(name, type, action) {
|
||||
const button = document.createElement("button");
|
||||
button.classList.add("btn", "btn-" + type, "btn-sm", "ml-2");
|
||||
button.innerHTML = name;
|
||||
button.onclick = action;
|
||||
document.querySelector(".web-form-actions").appendChild(button);
|
||||
}
|
||||
|
||||
setup_primary_action() {
|
||||
this.add_button(this.button_label || "Save", "primary", () =>
|
||||
this.save(this.accept_payment && !this.doc.paid)
|
||||
);
|
||||
}
|
||||
|
||||
setup_cancel_button() {
|
||||
this.add_button("Cancel", "light", () => this.cancel());
|
||||
}
|
||||
|
||||
setup_delete_button() {
|
||||
this.add_button("Delete", "danger", () => this.delete());
|
||||
}
|
||||
|
||||
setup_print_button() {
|
||||
this.add_button(
|
||||
'<i class="fa fa-print" aria-hidden="true"></i>',
|
||||
"light",
|
||||
() => this.print()
|
||||
);
|
||||
}
|
||||
|
||||
get_values(ignore_errors) {
|
||||
let values = super.get_values(ignore_errors);
|
||||
values.doctype = this.doc_type;
|
||||
values.name = this.doc_name;
|
||||
values.web_form_name = this.name;
|
||||
return values;
|
||||
}
|
||||
|
||||
save(accept_payment) {
|
||||
this.validate && this.validate();
|
||||
|
||||
let data = this.get_values(this.allow_incomplete);
|
||||
if (!data || window.saving) return;
|
||||
|
||||
// Save
|
||||
window.saving = true;
|
||||
frappe.form_dirty = false;
|
||||
|
||||
frappe.call({
|
||||
type: "POST",
|
||||
method: "frappe.website.doctype.web_form.web_form.accept",
|
||||
args: {
|
||||
data: data,
|
||||
web_form: this.name,
|
||||
for_payment: accept_payment
|
||||
},
|
||||
callback: response => {
|
||||
// Check for any exception in response
|
||||
if (!response.exc) {
|
||||
// Success
|
||||
this.handle_success(response.message);
|
||||
}
|
||||
},
|
||||
always: function() {
|
||||
window.saving = false;
|
||||
}
|
||||
});
|
||||
login_required.set_message(__("You are not permitted to access this page."));
|
||||
login_required.show();
|
||||
return true;
|
||||
}
|
||||
|
||||
function show_grid() {
|
||||
web_form_list = new frappe.views.WebFormList({
|
||||
parent: wrapper,
|
||||
doctype: web_form_doctype,
|
||||
web_form_name: web_form_name,
|
||||
settings: web_form_settings
|
||||
})
|
||||
delete() {
|
||||
frappe.call({
|
||||
type: "POST",
|
||||
method: "frappe.website.doctype.web_form.web_form.delete",
|
||||
args: {
|
||||
web_form_name: this.name,
|
||||
docname: this.doc.name
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function show_form() {
|
||||
if (web_form_settings.doc_name && web_form_settings.allow_edit == 0) {
|
||||
window.location.replace(window.location.pathname + "?new=1")
|
||||
print() {
|
||||
window.location.href = `/printview?
|
||||
doctype=${this.doc_type}
|
||||
&name=${this.doc_name}
|
||||
&format=${this.print_format || "Standard"}`;
|
||||
}
|
||||
|
||||
cancel() {
|
||||
window.location.href = window.location.pathname;
|
||||
}
|
||||
|
||||
handle_success(data) {
|
||||
if (this.accept_payment && !this.doc.paid) {
|
||||
window.location.href = data;
|
||||
}
|
||||
|
||||
get_data().then(res => {
|
||||
const data = setup_fields(res.message);
|
||||
data.web_form.is_new = web_form_settings.is_new;
|
||||
data.web_form.doc_name = web_form_settings.doc_name
|
||||
|
||||
let web_form = new frappe.ui.WebForm({
|
||||
parent: wrapper,
|
||||
fields: data.web_form.web_form_fields,
|
||||
doc: res.message.doc,
|
||||
...data.web_form,
|
||||
});
|
||||
|
||||
web_form.make()
|
||||
})
|
||||
}
|
||||
|
||||
function get_data() {
|
||||
return frappe.call({
|
||||
method: "frappe.website.doctype.web_form.web_form.get_form_data",
|
||||
args: {
|
||||
doctype: web_form_doctype,
|
||||
docname: doc_name,
|
||||
web_form_name: web_form_name
|
||||
},
|
||||
freeze: true
|
||||
});
|
||||
}
|
||||
|
||||
function setup_fields(form_data) {
|
||||
form_data.web_form.web_form_fields.map(df => {
|
||||
if (df.fieldtype === "Table") {
|
||||
df.get_data = () => {
|
||||
let data = [];
|
||||
if (form_data.doc) {
|
||||
data = form_data.doc[df.fieldname];
|
||||
const success_dialog = new frappe.ui.Dialog({
|
||||
title: __("Saved Successfully"),
|
||||
secondary_action: () => {
|
||||
if (this.login_required) {
|
||||
if (this.route_to_success_link) {
|
||||
window.location.pathname = this.success_url;
|
||||
} else {
|
||||
window.location.href =
|
||||
window.location.pathname + "?name=" + data.name;
|
||||
}
|
||||
return data;
|
||||
};
|
||||
|
||||
df.fields = form_data[df.fieldname];
|
||||
|
||||
if (df.fieldtype === "Attach") {
|
||||
df.is_private = true;
|
||||
}
|
||||
|
||||
df.is_web_form = true;
|
||||
|
||||
delete df.parent;
|
||||
delete df.parentfield;
|
||||
delete df.parenttype;
|
||||
delete df.doctype;
|
||||
|
||||
return df;
|
||||
}
|
||||
if (df.fieldtype === "Link") df.only_select = true;
|
||||
});
|
||||
|
||||
return form_data;
|
||||
const success_message =
|
||||
this.success_message || __("Your information has been submitted");
|
||||
success_dialog.set_message(success_message);
|
||||
success_dialog.show();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
@ -1,158 +0,0 @@
|
|||
frappe.provide("frappe.ui");
|
||||
frappe.provide("frappe.web_form");
|
||||
|
||||
window.web_form = null;
|
||||
|
||||
frappe.ui.WebForm = class WebForm extends frappe.ui.FieldGroup {
|
||||
constructor(opts) {
|
||||
super();
|
||||
Object.assign(this, opts);
|
||||
window.web_form = this;
|
||||
frappe.web_form = this;
|
||||
}
|
||||
|
||||
make() {
|
||||
super.make();
|
||||
this.set_field_values();
|
||||
if (this.introduction_text) this.set_form_description(this.introduction_text);
|
||||
if (this.allow_print && !this.is_new) this.setup_print_button();
|
||||
if (this.allow_delete && !this.is_new) this.setup_delete_button();
|
||||
if (this.is_new) this.setup_cancel_button();
|
||||
this.setup_primary_action();
|
||||
$(".link-btn").remove();
|
||||
}
|
||||
|
||||
on(fieldname, handler) {
|
||||
let field = this.fields_dict[fieldname];
|
||||
field.input.addEventListener("focus", () =>
|
||||
handler(field, field.value)
|
||||
);
|
||||
}
|
||||
|
||||
set_field_values() {
|
||||
if (this.doc_name) this.set_values(this.doc);
|
||||
else return;
|
||||
}
|
||||
|
||||
set_form_description(intro) {
|
||||
let intro_wrapper = document.getElementById('introduction');
|
||||
intro_wrapper.innerHTML = intro;
|
||||
}
|
||||
|
||||
add_button(name, type, action) {
|
||||
const button = document.createElement("button");
|
||||
button.classList.add("btn", "btn-" + type, "btn-sm", "ml-2");
|
||||
button.innerHTML = name;
|
||||
button.onclick = action;
|
||||
document.querySelector(".web-form-actions").appendChild(button);
|
||||
}
|
||||
|
||||
setup_primary_action() {
|
||||
this.add_button(this.button_label || "Save", "primary", () =>
|
||||
this.save(this.accept_payment && !this.doc.paid)
|
||||
);
|
||||
}
|
||||
|
||||
setup_cancel_button() {
|
||||
this.add_button("Cancel", "light", () => this.cancel());
|
||||
}
|
||||
|
||||
setup_delete_button() {
|
||||
this.add_button("Delete", "danger", () => this.delete());
|
||||
}
|
||||
|
||||
setup_print_button() {
|
||||
this.add_button(
|
||||
'<i class="fa fa-print" aria-hidden="true"></i>',
|
||||
"light",
|
||||
() => this.print()
|
||||
);
|
||||
}
|
||||
|
||||
get_values(ignore_errors) {
|
||||
let values = super.get_values(ignore_errors);
|
||||
values.doctype = this.doc_type;
|
||||
values.name = this.doc_name;
|
||||
values.web_form_name = this.name;
|
||||
return values;
|
||||
}
|
||||
|
||||
save(accept_payment) {
|
||||
this.validate && this.validate();
|
||||
|
||||
let data = this.get_values(this.allow_incomplete);
|
||||
if (!data || window.saving) return;
|
||||
|
||||
// Save
|
||||
window.saving = true;
|
||||
frappe.form_dirty = false;
|
||||
|
||||
frappe.call({
|
||||
type: "POST",
|
||||
method: "frappe.website.doctype.web_form.web_form.accept",
|
||||
args: {
|
||||
data: data,
|
||||
web_form: this.name,
|
||||
for_payment: accept_payment
|
||||
},
|
||||
callback: response => {
|
||||
// Check for any exception in response
|
||||
if (!response.exc) {
|
||||
// Success
|
||||
this.handle_success(response.message);
|
||||
}
|
||||
},
|
||||
always: function() {
|
||||
window.saving = false;
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
delete() {
|
||||
frappe.call({
|
||||
type: "POST",
|
||||
method: "frappe.website.doctype.web_form.web_form.delete",
|
||||
args: {
|
||||
web_form_name: this.name,
|
||||
docname: this.doc.name
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
print() {
|
||||
window.location.href = `/printview?
|
||||
doctype=${this.doc_type}
|
||||
&name=${this.doc_name}
|
||||
&format=${this.print_format || "Standard"}`;
|
||||
}
|
||||
|
||||
cancel() {
|
||||
window.location.href = window.location.pathname;
|
||||
}
|
||||
|
||||
handle_success(data) {
|
||||
if (this.accept_payment && !this.doc.paid) {
|
||||
window.location.href = data;
|
||||
}
|
||||
|
||||
const success_dialog = new frappe.ui.Dialog({
|
||||
title: __("Saved Successfully"),
|
||||
secondary_action: () => {
|
||||
if (this.login_required) {
|
||||
if (this.route_to_success_link) {
|
||||
window.location.pathname = this.success_url;
|
||||
} else {
|
||||
window.location.href =
|
||||
window.location.pathname + "?name=" + data.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const success_message =
|
||||
this.success_message || __("Your information has been submitted");
|
||||
success_dialog.set_message(success_message);
|
||||
success_dialog.show();
|
||||
}
|
||||
};
|
||||
100
frappe/public/js/frappe/web_form/webform_script.js
Normal file
100
frappe/public/js/frappe/web_form/webform_script.js
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
frappe.ready(function() {
|
||||
const { web_form_doctype, doc_name, web_form_name } = web_form_settings;
|
||||
const wrapper = $(".web-form-wrapper");
|
||||
|
||||
if (web_form_settings.login_required && frappe.session.user === "Guest") show_login_prompt();
|
||||
else if (web_form_settings.is_list) show_grid();
|
||||
else show_form();
|
||||
|
||||
setTimeout(() => {
|
||||
document.querySelector("body").style.display = "block";
|
||||
frappe.init_client_script && frappe.init_client_script();
|
||||
frappe.web_form.after_load && frappe.web_form.after_load();
|
||||
}, 500);
|
||||
|
||||
function show_login_prompt() {
|
||||
const login_required = new frappe.ui.Dialog({
|
||||
title: __("Not Permitted"),
|
||||
primary_action_label: __("Login"),
|
||||
primary_action: () => {
|
||||
window.location.replace('/login?redirect-to=/' + web_form_name)
|
||||
}
|
||||
});
|
||||
login_required.set_message(__("You are not permitted to access this page."));
|
||||
login_required.show();
|
||||
}
|
||||
|
||||
function show_grid() {
|
||||
web_form_list = new frappe.views.WebFormList({
|
||||
parent: wrapper,
|
||||
doctype: web_form_doctype,
|
||||
web_form_name: web_form_name,
|
||||
settings: web_form_settings
|
||||
})
|
||||
}
|
||||
|
||||
function show_form() {
|
||||
if (web_form_settings.doc_name && web_form_settings.allow_edit == 0) {
|
||||
window.location.replace(window.location.pathname + "?new=1")
|
||||
}
|
||||
|
||||
get_data().then(res => {
|
||||
const data = setup_fields(res.message);
|
||||
data.web_form.is_new = web_form_settings.is_new;
|
||||
data.web_form.doc_name = web_form_settings.doc_name
|
||||
|
||||
let web_form = new frappe.ui.WebForm({
|
||||
parent: wrapper,
|
||||
fields: data.web_form.web_form_fields,
|
||||
doc: res.message.doc,
|
||||
...data.web_form,
|
||||
});
|
||||
|
||||
web_form.make()
|
||||
})
|
||||
}
|
||||
|
||||
function get_data() {
|
||||
return frappe.call({
|
||||
method: "frappe.website.doctype.web_form.web_form.get_form_data",
|
||||
args: {
|
||||
doctype: web_form_doctype,
|
||||
docname: doc_name,
|
||||
web_form_name: web_form_name
|
||||
},
|
||||
freeze: true
|
||||
});
|
||||
}
|
||||
|
||||
function setup_fields(form_data) {
|
||||
form_data.web_form.web_form_fields.map(df => {
|
||||
if (df.fieldtype === "Table") {
|
||||
df.get_data = () => {
|
||||
let data = [];
|
||||
if (form_data.doc) {
|
||||
data = form_data.doc[df.fieldname];
|
||||
}
|
||||
return data;
|
||||
};
|
||||
|
||||
df.fields = form_data[df.fieldname];
|
||||
|
||||
if (df.fieldtype === "Attach") {
|
||||
df.is_private = true;
|
||||
}
|
||||
|
||||
df.is_web_form = true;
|
||||
|
||||
delete df.parent;
|
||||
delete df.parentfield;
|
||||
delete df.parenttype;
|
||||
delete df.doctype;
|
||||
|
||||
return df;
|
||||
}
|
||||
if (df.fieldtype === "Link") df.only_select = true;
|
||||
});
|
||||
|
||||
return form_data;
|
||||
}
|
||||
});
|
||||
Loading…
Add table
Reference in a new issue