seitime-frappe/frappe/website/js/web_form.js
Mohamed_Alsum 893b7e0980 remove duplicate error mgs on submit web_form (#5972)
* remove dublicate error mgs on submit web_form

* show side-bar in RTL lang
2018-08-20 10:39:54 +05:30

188 lines
4.1 KiB
JavaScript

import WebForm from './web_form_class';
import make_datatable from './grid_list';
frappe.ready(function() {
if(web_form_settings.is_list) {
$('body').show();
if($('.web-form-list').length) {
make_datatable('.web-form-list', web_form_settings.web_form_doctype);
}
return;
}
frappe.form_dirty = false;
$.extend(frappe, web_form_settings);
moment.defaultFormat = frappe.moment_date_format;
$('[data-toggle="tooltip"]').tooltip();
const { web_form_doctype: doctype, doc_name: docname, web_form_name } = web_form_settings;
const wrapper = $(`.webform-wrapper`);
var $form = $("div[data-web-form='"+frappe.web_form_name+"']");
// :( Needed by core model, meta and perm, all now included in th website js
// One of the few non-touchy options
frappe.boot.user = {
can_read: '', can_write: '', can_create: ''
};
frappe.web_form = new WebForm({
wrapper: wrapper,
doctype: doctype,
docname: docname,
web_form_name: web_form_name,
allow_incomplete: frappe.allow_incomplete
});
setTimeout(() => {
$('body').css('display', 'block');
if (frappe.init_client_script) {
frappe.init_client_script();
if (frappe.web_form.after_load) {
frappe.web_form.after_load();
}
}
}, 500);
// allow payment only if
$('.btn-payment').on('click', function() {
save(true);
return false;
});
// submit
$(".btn-form-submit").on("click", function() {
save();
return false;
});
// change section
$('.btn-change-section, .slide-progress .fa-fw').on('click', function() {
var idx = $(this).attr('data-idx');
if(!frappe.form_dirty || frappe.is_read_only) {
show_slide(idx);
} else {
if(save() !== false) {
show_slide(idx);
}
}
return false;
});
var show_slide = function(idx) {
// hide all sections
$('.web-form-page').addClass('hidden');
// slide-progress
$('.slide-progress .fa-circle')
.removeClass('fa-circle').addClass('fa-circle-o');
$('.slide-progress .fa-fw[data-idx="'+idx+'"]')
.removeClass('fa-circle-o').addClass('fa-circle');
// un hide target section
$('.web-form-page[data-idx="'+idx+'"]')
.removeClass('hidden')
.find(':input:first').focus();
};
function save(for_payment) {
if (frappe.web_form.validate()===false) {
return false;
}
let data = frappe.web_form.get_values();
if (!data) {
return false;
}
if (window.saving) {
return false;
}
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: frappe.web_form_name,
for_payment: for_payment
},
freeze: true,
btn: $form.find("[type='submit']"),
callback: function(data) {
if(!data.exc) {
frappe.doc_name = data.message.name;
if(!frappe.login_required) {
show_success_message();
}
if(frappe.is_new && frappe.login_required) {
// reload page (with ID)
window.location.href = window.location.pathname + "?name=" + frappe.doc_name;
}
if(for_payment && data.message) {
// redirect to payment
window.location.href = data.message;
}
// refresh values
if (frappe.web_form) {
frappe.web_form.field_group.set_values(data.message);
}
} else {
frappe.msgprint(__('There were errors. Please report this.'));
}
},
always: function() {
window.saving = false;
}
});
return true;
}
function show_success_message() {
$form.addClass("hide");
$(".comments, .introduction, .page-head").addClass("hide");
scroll(0, 0);
set_message(frappe.success_link, true);
}
function set_message(msg, permanent) {
$(".form-message")
.html(msg)
.removeClass("hide");
if(!permanent) {
setTimeout(function() {
$(".form-message").addClass('hide');
}, 5000);
}
}
// close button
$(".close").on("click", function() {
var name = $(this).attr("data-name");
if(name) {
frappe.call({
type:"POST",
method: "frappe.website.doctype.web_form.web_form.delete",
args: {
"web_form": frappe.web_form_name,
"name": name
},
callback: function(r) {
if(!r.exc) {
location.reload();
}
}
});
}
});
});