// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// MIT License. See license.txt
/* eslint-disable no-console */
import hljs from './syntax_highlight';
frappe.provide("website");
frappe.provide("frappe.awesome_bar_path");
window.cur_frm = null;
$.extend(frappe, {
boot: {
lang: 'en'
},
_assets_loaded: [],
require: async function(links, callback) {
if (typeof (links) === 'string') {
links = [links];
}
for (let link of links) {
await this.add_asset_to_head(link);
}
callback && callback();
},
add_asset_to_head(link) {
return new Promise(resolve => {
if (frappe._assets_loaded.includes(link)) return resolve();
let el;
if(link.split('.').pop() === 'js') {
el = document.createElement('script');
el.type = 'text/javascript';
el.src = link;
} else {
el = document.createElement('link');
el.type = 'text/css';
el.rel = 'stylesheet';
el.href = link;
}
document.getElementsByTagName('head')[0].appendChild(el);
el.onload = () => {
frappe._assets_loaded.push(link);
resolve();
};
});
},
hide_message: function() {
$('.message-overlay').remove();
},
call: function(opts) {
// opts = {"method": "PYTHON MODULE STRING", "args": {}, "callback": function(r) {}}
if (typeof arguments[0]==='string') {
opts = {
method: arguments[0],
args: arguments[1],
callback: arguments[2]
}
}
frappe.prepare_call(opts);
if(opts.freeze) {
frappe.freeze();
}
return $.ajax({
type: opts.type || "POST",
url: "/",
data: opts.args,
dataType: "json",
headers: { "X-Frappe-CSRF-Token": frappe.csrf_token },
statusCode: opts.statusCode || {
404: function() {
frappe.msgprint(__("Not found"));
},
403: function() {
frappe.msgprint(__("Not permitted"));
},
200: function(data) {
if(opts.callback)
opts.callback(data);
if(opts.success)
opts.success(data);
}
}
}).always(function(data) {
if(opts.freeze) {
frappe.unfreeze();
}
// executed before statusCode functions
if(data.responseText) {
try {
data = JSON.parse(data.responseText);
} catch (e) {
data = {};
}
}
frappe.process_response(opts, data);
});
},
prepare_call: function(opts) {
if(opts.btn) {
$(opts.btn).prop("disabled", true);
}
if(opts.msg) {
$(opts.msg).toggle(false);
}
if(!opts.args) opts.args = {};
// method
if(opts.method) {
opts.args.cmd = opts.method;
}
// stringify
$.each(opts.args, function(key, val) {
if(typeof val != "string") {
opts.args[key] = JSON.stringify(val);
}
});
if(!opts.no_spinner) {
//NProgress.start();
}
},
process_response: function(opts, data) {
//if(!opts.no_spinner) NProgress.done();
if(opts.btn) {
$(opts.btn).prop("disabled", false);
}
if (data._server_messages) {
var server_messages = JSON.parse(data._server_messages || '[]');
server_messages = $.map(server_messages, function(v) {
// temp fix for messages sent as dict
try {
return JSON.parse(v).message;
} catch (e) {
return v;
}
}).join('
');
if(opts.error_msg) {
$(opts.error_msg).html(server_messages).toggle(true);
} else {
frappe.msgprint(server_messages);
}
}
if(data.exc) {
// if(opts.btn) {
// $(opts.btn).addClass($(opts.btn).is('button') || $(opts.btn).hasClass('btn') ? "btn-danger" : "text-danger");
// setTimeout(function() { $(opts.btn).removeClass("btn-danger text-danger"); }, 1000);
// }
try {
var err = JSON.parse(data.exc);
if($.isArray(err)) {
err = err.join("\n");
}
console.error ? console.error(err) : console.log(err);
} catch(e) {
console.log(data.exc);
}
} else{
// if(opts.btn) {
// $(opts.btn).addClass($(opts.btn).is('button') || $(opts.btn).hasClass('btn') ? "btn-success" : "text-success");
// setTimeout(function() { $(opts.btn).removeClass("btn-success text-success"); }, 1000);
// }
}
if(opts.msg && data.message) {
$(opts.msg).html(data.message).toggle(true);
}
if(opts.always) {
opts.always(data);
}
},
show_message: function(text, icon) {
if(!icon) icon="fa fa-refresh fa-spin";
frappe.hide_message();
$('
{ if (r.message) { frappe.require('/assets/js/moment-bundle.min.js', () => { frappe.require('/assets/js/chat.js', () => { frappe.chat.setup(); }); }); } } }); frappe.socketio.init(window.socketio_port); });