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:
Shivam Mishra 2019-06-13 09:27:15 +05:30
parent 66cb28e797
commit d352ec0076
5 changed files with 243 additions and 243 deletions

View file

@ -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"
],

View file

@ -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();
}
});
};

View file

@ -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();
}
};

View 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;
}
});