From 2a3b34822bd6b828e3b95a7aacde531251c36eb7 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Thu, 11 May 2017 15:55:32 +0530 Subject: [PATCH 1/8] Remove all implicit global variables --- .../doctype/communication/communication.js | 26 +- .../feedback_trigger/feedback_trigger.js | 2 +- .../system_settings/system_settings.js | 2 +- frappe/core/doctype/user/user.js | 17 +- .../page/data_import_tool/data_import_tool.js | 4 +- .../core/page/modules_setup/modules_setup.js | 2 +- .../permission_manager/permission_manager.js | 10 +- .../page/user_permissions/user_permissions.js | 10 +- .../doctype/customize_form/customize_form.js | 4 +- .../property_setter/property_setter.js | 2 +- frappe/desk/doctype/todo/todo_list.js | 6 +- frappe/desk/page/activity/activity.js | 13 +- frappe/desk/page/chat/chat.js | 4 +- .../auto_email_report/auto_email_report.js | 6 +- .../email/doctype/email_alert/email_alert.js | 4 +- frappe/email/doctype/newsletter/newsletter.js | 2 +- .../doctype/print_format/print_format.js | 8 +- .../print_format_builder.js | 12 +- frappe/public/js/frappe/assets.js | 2 +- frappe/public/js/frappe/defaults.js | 4 +- frappe/public/js/frappe/desk.js | 45 +- frappe/public/js/frappe/dom.js | 110 +-- frappe/public/js/frappe/feedback.js | 8 +- frappe/public/js/frappe/form/control.js | 42 +- frappe/public/js/frappe/form/dashboard.js | 5 +- .../public/js/frappe/form/footer/assign_to.js | 8 +- .../js/frappe/form/footer/attachments.js | 28 +- .../public/js/frappe/form/footer/timeline.js | 10 +- frappe/public/js/frappe/form/form_viewers.js | 12 +- frappe/public/js/frappe/form/formatters.js | 10 +- frappe/public/js/frappe/form/grid.js | 24 +- frappe/public/js/frappe/form/layout.js | 8 +- frappe/public/js/frappe/form/link_selector.js | 9 +- frappe/public/js/frappe/form/print.js | 9 +- frappe/public/js/frappe/form/quick_entry.js | 2 +- frappe/public/js/frappe/form/save.js | 6 +- .../public/js/frappe/form/script_manager.js | 4 +- frappe/public/js/frappe/form/share.js | 4 +- frappe/public/js/frappe/form/sidebar.js | 4 +- frappe/public/js/frappe/form/toolbar.js | 6 +- frappe/public/js/frappe/form/workflow.js | 6 +- frappe/public/js/frappe/list/list_renderer.js | 12 +- frappe/public/js/frappe/list/list_sidebar.js | 12 +- frappe/public/js/frappe/list/list_view.js | 24 +- frappe/public/js/frappe/misc/common.js | 8 +- frappe/public/js/frappe/misc/datetime.js | 26 +- frappe/public/js/frappe/misc/number_format.js | 122 +-- frappe/public/js/frappe/misc/pretty_date.js | 8 +- frappe/public/js/frappe/misc/tools.js | 2 +- frappe/public/js/frappe/misc/user.js | 6 +- frappe/public/js/frappe/misc/utils.js | 217 +++--- frappe/public/js/frappe/model/create_new.js | 16 +- frappe/public/js/frappe/model/meta.js | 2 +- frappe/public/js/frappe/model/model.js | 18 +- frappe/public/js/frappe/model/perm.js | 10 +- frappe/public/js/frappe/model/workflow.js | 4 +- frappe/public/js/frappe/request.js | 20 +- frappe/public/js/frappe/roles_editor.js | 2 +- frappe/public/js/frappe/router.js | 2 +- frappe/public/js/frappe/socketio_client.js | 2 +- frappe/public/js/frappe/toolbar.js | 4 +- frappe/public/js/frappe/translate.js | 2 +- frappe/public/js/frappe/ui/base_list.js | 2 +- frappe/public/js/frappe/ui/charts.js | 12 +- frappe/public/js/frappe/ui/field_group.js | 4 +- frappe/public/js/frappe/ui/filters/filters.js | 11 +- frappe/public/js/frappe/ui/like.js | 8 +- frappe/public/js/frappe/ui/listing.js | 8 +- frappe/public/js/frappe/ui/messages.js | 5 +- frappe/public/js/frappe/ui/toolbar/about.js | 10 +- .../js/frappe/ui/toolbar/awesome_bar.js | 4 +- .../js/frappe/ui/toolbar/notifications.js | 6 +- frappe/public/js/frappe/ui/toolbar/search.js | 9 +- .../js/frappe/ui/toolbar/search_utils.js | 737 +++++++++--------- frappe/public/js/frappe/ui/toolbar/toolbar.js | 6 +- frappe/public/js/frappe/ui/tree.js | 2 +- frappe/public/js/frappe/upload.js | 12 +- .../js/frappe/views/calendar/calendar.js | 4 +- .../public/js/frappe/views/communication.js | 28 +- .../js/frappe/views/gantt/gantt_view.js | 4 +- .../js/frappe/views/image/image_view.js | 2 +- .../js/frappe/views/inbox/inbox_view.js | 12 +- .../js/frappe/views/kanban/kanban_board.js | 35 +- frappe/public/js/frappe/views/pageview.js | 2 +- .../js/frappe/views/reports/grid_report.js | 50 +- .../js/frappe/views/reports/query_report.js | 40 +- .../js/frappe/views/reports/reportview.js | 10 +- frappe/public/js/frappe/views/test_runner.js | 2 +- frappe/public/js/frappe/views/treeview.js | 2 +- frappe/public/js/legacy/clientscriptAPI.js | 13 +- frappe/public/js/legacy/datatype.js | 3 +- frappe/public/js/legacy/dom.js | 4 +- frappe/public/js/legacy/form.js | 26 +- frappe/public/js/legacy/handler.js | 2 +- frappe/public/js/legacy/layout.js | 2 +- frappe/public/js/legacy/print_format.js | 26 +- frappe/public/js/legacy/print_table.js | 2 +- frappe/templates/includes/contact.js | 10 +- .../website_settings/website_settings.js | 4 +- 99 files changed, 1076 insertions(+), 1062 deletions(-) diff --git a/frappe/core/doctype/communication/communication.js b/frappe/core/doctype/communication/communication.js index 71abb6d7ae..0b3db95540 100644 --- a/frappe/core/doctype/communication/communication.js +++ b/frappe/core/doctype/communication/communication.js @@ -33,7 +33,7 @@ frappe.ui.form.on("Communication", { if(frm.doc.communication_type == "Feedback") { frm.add_custom_button(__("Resend"), function() { - feedback = new frappe.utils.Feedback(); + var feedback = new frappe.utils.Feedback(); feedback.resend_feedback_request(frm.doc); }); } @@ -111,7 +111,7 @@ frappe.ui.form.on("Communication", { d.set_value("reference_doctype", frm.doc.reference_doctype); d.set_value("reference_name", frm.doc.reference_name); d.set_primary_action(__("Relink"), function () { - values = d.get_values(); + var values = d.get_values(); if (values) { frappe.confirm( __('Are you sure you want to relink this communication to {0}?', [values["reference_name"]]), @@ -130,7 +130,7 @@ frappe.ui.form.on("Communication", { }); }, function () { - show_alert('Document not Relinked') + frappe.show_alert('Document not Relinked') } ); } @@ -139,8 +139,8 @@ frappe.ui.form.on("Communication", { }, mark_as_read_unread: function(frm) { - action = frm.doc.seen? "Unread": "Read"; - flag = "(\\SEEN)"; + var action = frm.doc.seen? "Unread": "Read"; + var flag = "(\\SEEN)"; return frappe.call({ method: "frappe.email.inbox.create_email_flag_queue", @@ -154,7 +154,7 @@ frappe.ui.form.on("Communication", { }, reply: function(frm) { - args = frm.events.get_mail_args(frm); + var args = frm.events.get_mail_args(frm); $.extend(args, { subject: __("Re: {0}", [frm.doc.subject]), recipients: frm.doc.sender @@ -164,7 +164,7 @@ frappe.ui.form.on("Communication", { }, reply_all: function(frm) { - args = frm.events.get_mail_args(frm) + var args = frm.events.get_mail_args(frm) $.extend(args, { subject: __("Re: {0}", [frm.doc.subject]), recipients: frm.doc.sender, @@ -174,7 +174,7 @@ frappe.ui.form.on("Communication", { }, forward_mail: function(frm) { - args = frm.events.get_mail_args(frm) + var args = frm.events.get_mail_args(frm) $.extend(args, { forward: true, subject: __("Fw: {0}", [frm.doc.subject]), @@ -184,7 +184,7 @@ frappe.ui.form.on("Communication", { }, get_mail_args: function(frm) { - sender_email_id = "" + var sender_email_id = "" $.each(frappe.boot.email_accounts, function(idx, account) { if(account.email_account == frm.doc.email_account) { sender_email_id = account.email_id @@ -202,11 +202,11 @@ frappe.ui.form.on("Communication", { add_to_contact: function(frm) { var me = this; - fullname = frm.doc.sender_full_name || "" + var fullname = frm.doc.sender_full_name || "" - names = fullname.split(" ") - first_name = names[0] - last_name = names.length >= 2? names[names.length - 1]: "" + var names = fullname.split(" ") + var first_name = names[0] + var last_name = names.length >= 2? names[names.length - 1]: "" frappe.route_options = { "email_id": frm.doc.sender, diff --git a/frappe/core/doctype/feedback_trigger/feedback_trigger.js b/frappe/core/doctype/feedback_trigger/feedback_trigger.js index 7413ce3de6..376f98d08f 100644 --- a/frappe/core/doctype/feedback_trigger/feedback_trigger.js +++ b/frappe/core/doctype/feedback_trigger/feedback_trigger.js @@ -37,7 +37,7 @@ frappe.ui.form.on('Feedback Trigger', { frappe.model.with_doctype(frm.doc.document_type, function() { var fields = frappe.get_doc("DocType", frm.doc.document_type).fields; $.each(fields, function(idx, field) { - if(!inList(frappe.model.no_value_type, field.fieldtype) && field.options == "Email") { + if(!in_list(frappe.model.no_value_type, field.fieldtype) && field.options == "Email") { frm.options.push(field.label); frm.fieldname_mapper[field.label] = field.fieldname; } diff --git a/frappe/core/doctype/system_settings/system_settings.js b/frappe/core/doctype/system_settings/system_settings.js index f8ac1734f9..5d8ad211ab 100644 --- a/frappe/core/doctype/system_settings/system_settings.js +++ b/frappe/core/doctype/system_settings/system_settings.js @@ -7,7 +7,7 @@ frappe.ui.form.on("System Settings", "refresh", function(frm) { $.each(data.message.defaults, function(key, val) { frm.set_value(key, val); - sys_defaults[key] = val; + frappe.sys_defaults[key] = val; }) } }); diff --git a/frappe/core/doctype/user/user.js b/frappe/core/doctype/user/user.js index b540601da1..b57a472642 100644 --- a/frappe/core/doctype/user/user.js +++ b/frappe/core/doctype/user/user.js @@ -18,7 +18,7 @@ frappe.ui.form.on('User', { }, onload: function(frm) { - if(has_common(roles, ["Administrator", "System Manager"]) && !frm.doc.__islocal) { + if(has_common(frappe.user_roles, ["Administrator", "System Manager"]) && !frm.doc.__islocal) { if(!frm.roles_editor) { var role_area = $('
') .appendTo(frm.fields_dict.roles_html.wrapper); @@ -35,11 +35,11 @@ frappe.ui.form.on('User', { refresh: function(frm) { var doc = frm.doc; - if(doc.name===user && !doc.__unsaved + if(doc.name===frappe.session.user && !doc.__unsaved && frappe.all_timezones && (doc.language || frappe.boot.user.language) && doc.language !== frappe.boot.user.language) { - msgprint(__("Refreshing...")); + frappe.msgprint(__("Refreshing...")); window.location.reload(); } @@ -53,7 +53,7 @@ frappe.ui.form.on('User', { frappe.set_route("modules_setup"); }, null, "btn-default") - if(has_common(roles, ["Administrator", "System Manager"])) { + if(has_common(frappe.user_roles, ["Administrator", "System Manager"])) { frm.add_custom_button(__("Set User Permissions"), function() { frappe.route_options = { @@ -79,10 +79,10 @@ frappe.ui.form.on('User', { frm.roles_editor && frm.roles_editor.show(); frm.module_editor && frm.module_editor.refresh(); - if(user==doc.name) { + if(frappe.session.user==doc.name) { // update display settings if(doc.user_image) { - frappe.boot.user_info[user].image = frappe.utils.get_file_link(doc.user_image); + frappe.boot.user_info[frappe.session.user].image = frappe.utils.get_file_link(doc.user_image); } } } @@ -116,12 +116,12 @@ frappe.ui.form.on('User', { }, enabled: function(frm) { var doc = frm.doc; - if(!doc.__islocal && has_common(roles, ["Administrator", "System Manager"])) { + if(!doc.__islocal && has_common(frappe.user_roles, ["Administrator", "System Manager"])) { frm.toggle_display(['sb1', 'sb3', 'modules_access'], doc.enabled); frm.set_df_property('enabled', 'read_only', 0); } - if(user!="Administrator") { + if(frappe.session.user!=="Administrator") { frm.toggle_enable('email', doc.__islocal); } }, @@ -177,6 +177,7 @@ frappe.ModuleEditor = Class.extend({ }); }, bind: function() { + var me = this; this.wrapper.on("change", ".block-module-check", function() { var module = $(this).attr('data-module'); if($(this).prop("checked")) { diff --git a/frappe/core/page/data_import_tool/data_import_tool.js b/frappe/core/page/data_import_tool/data_import_tool.js index c0ec56c0e1..3abbb96667 100644 --- a/frappe/core/page/data_import_tool/data_import_tool.js +++ b/frappe/core/page/data_import_tool/data_import_tool.js @@ -129,12 +129,12 @@ frappe.DataImportTool = Class.extend({ queued: function() { // async, show queued msg_dialog.clear(); - msgprint(__("Import Request Queued. This may take a few moments, please be patient.")); + frappe.msgprint(__("Import Request Queued. This may take a few moments, please be patient.")); }, running: function() { // update async status as running msg_dialog.clear(); - msgprint(__("Importing...")); + frappe.msgprint(__("Importing...")); me.write_messages([__("Importing")]); me.has_progress = false; }, diff --git a/frappe/core/page/modules_setup/modules_setup.js b/frappe/core/page/modules_setup/modules_setup.js index e9952c1a18..cb7b55a602 100644 --- a/frappe/core/page/modules_setup/modules_setup.js +++ b/frappe/core/page/modules_setup/modules_setup.js @@ -59,7 +59,7 @@ frappe.pages['modules_setup'].on_page_load = function(wrapper) { }; // application installer - if(frappe.boot.user.roles.indexOf('System Manager')!==-1) { + if(frappe.user_roles.includes('System Manager')) { page.add_inner_button('Install Apps', function() { frappe.set_route('applications'); }); diff --git a/frappe/core/page/permission_manager/permission_manager.js b/frappe/core/page/permission_manager/permission_manager.js index b8c3ee0dab..03ae1419b5 100644 --- a/frappe/core/page/permission_manager/permission_manager.js +++ b/frappe/core/page/permission_manager/permission_manager.js @@ -298,7 +298,7 @@ frappe.PermissionEngine = Class.extend({ r.message = $.map(r.message, function(p) { return $.format('{1}', [p, p]); }) - msgprint(__("Users with role {0}:", [__(role)]) + frappe.msgprint(__("Users with role {0}:", [__(role)]) + "
" + r.message.join("
")); } }) @@ -324,7 +324,7 @@ frappe.PermissionEngine = Class.extend({ }, callback: function(r) { if(r.exc) { - msgprint(__("Did not remove")); + frappe.msgprint(__("Did not remove")); } else { me.refresh(); } @@ -404,7 +404,7 @@ frappe.PermissionEngine = Class.extend({ args: args, callback: function(r) { if(r.exc) { - msgprint(__("Did not add")); + frappe.msgprint(__("Did not add")); } else { me.refresh(); } @@ -476,9 +476,9 @@ frappe.PermissionEngine = Class.extend({ }, callback: function(r) { if(r.exc) { - msgprint(__("Did not set")); + frappe.msgprint(__("Did not set")); } else { - var msg = msgprint(__("Saved!")); + var msg = frappe.msgprint(__("Saved!")); setTimeout(function() { msg.hide(); }, 3000); d.user_permission_doctypes = user_permission_doctypes; dialog.hide(); diff --git a/frappe/core/page/user_permissions/user_permissions.js b/frappe/core/page/user_permissions/user_permissions.js index a23e3aa0a3..e77101da4e 100644 --- a/frappe/core/page/user_permissions/user_permissions.js +++ b/frappe/core/page/user_permissions/user_permissions.js @@ -82,7 +82,7 @@ frappe.UserPermissions = Class.extend({ options: "[Select]" }); - if(roles.indexOf("System Manager")!==-1) { + if(frappe.user_roles.includes("System Manager")) { me.download = me.wrapper.page.add_field({ fieldname: "download", label: __("Download"), @@ -141,7 +141,7 @@ frappe.UserPermissions = Class.extend({ primary_action: function() { var filedata = d.fields_dict.attach.get_value(); if(!filedata) { - msgprint(_("Please attach a file")); + frappe.msgprint(_("Please attach a file")); return; } frappe.call({ @@ -151,7 +151,7 @@ frappe.UserPermissions = Class.extend({ }, callback: function(r) { if(!r.exc) { - msgprint(__("Permissions Updated")); + frappe.msgprint(__("Permissions Updated")); d.hide(); } } @@ -288,7 +288,7 @@ frappe.UserPermissions = Class.extend({ }, callback: function(r) { if(r.exc) { - msgprint(__("Did not remove")); + frappe.msgprint(__("Did not remove")); } else { me.refresh(); } @@ -349,7 +349,7 @@ frappe.UserPermissions = Class.extend({ args: args, callback: function(r) { if(r.exc) { - msgprint(__("Did not add")); + frappe.msgprint(__("Did not add")); } else { me.refresh(); } diff --git a/frappe/custom/doctype/customize_form/customize_form.js b/frappe/custom/doctype/customize_form/customize_form.js index 8308d5a85a..c84e93080a 100644 --- a/frappe/custom/doctype/customize_form/customize_form.js +++ b/frappe/custom/doctype/customize_form/customize_form.js @@ -129,7 +129,7 @@ frappe.ui.form.on("Customize Form Field", { before_fields_remove: function(frm, doctype, name) { var row = frappe.get_doc(doctype, name); if(!(row.is_custom_field || row.__islocal)) { - msgprint(__("Cannot delete standard field. You can hide it if you want")); + frappe.msgprint(__("Cannot delete standard field. You can hide it if you want")); throw "cannot delete custom field"; } }, @@ -171,7 +171,7 @@ frappe.customize_form.confirm = function(msg, frm) { method: "reset_to_defaults", callback: function(r) { if(r.exc) { - msgprint(r.exc); + frappe.msgprintr.exc); } else { d.hide(); frappe.customize_form.clear_locals_and_refresh(frm); diff --git a/frappe/custom/doctype/property_setter/property_setter.js b/frappe/custom/doctype/property_setter/property_setter.js index 2901fa2052..42f3f7965c 100644 --- a/frappe/custom/doctype/property_setter/property_setter.js +++ b/frappe/custom/doctype/property_setter/property_setter.js @@ -4,7 +4,7 @@ $.extend(cur_frm.cscript, { validate: function(doc) { if(doc.property_type=='Check' && !in_list(['0','1'], doc.value)) { - msgprint(__('Value for a check field can be either 0 or 1')); + frappe.msgprint(__('Value for a check field can be either 0 or 1')); validated = false; } } diff --git a/frappe/desk/doctype/todo/todo_list.js b/frappe/desk/doctype/todo/todo_list.js index 9be865a49c..d76217c833 100644 --- a/frappe/desk/doctype/todo/todo_list.js +++ b/frappe/desk/doctype/todo/todo_list.js @@ -1,7 +1,7 @@ frappe.listview_settings['ToDo'] = { onload: function(me) { frappe.route_options = { - "owner": user, + "owner": frappe.session.user, "status": "Open" }; me.page.set_title(__("To Do")); @@ -14,7 +14,7 @@ frappe.listview_settings['ToDo'] = { var assign_filter = me.filter_list.get_filter("assigned_by"); assign_filter && assign_filter.remove(true); - me.filter_list.add_filter(me.doctype, "owner", '=', user); + me.filter_list.add_filter(me.doctype, "owner", '=', frappe.session.user); me.run(); }); @@ -23,7 +23,7 @@ frappe.listview_settings['ToDo'] = { var assign_filter = me.filter_list.get_filter("owner"); assign_filter && assign_filter.remove(true); - me.filter_list.add_filter(me.doctype, "assigned_by", '=', user); + me.filter_list.add_filter(me.doctype, "assigned_by", '=', frappe.session.user); me.run(); }, ".assigned-to-me"); }, diff --git a/frappe/desk/page/activity/activity.js b/frappe/desk/page/activity/activity.js index bf3ccfc08c..10cc7962ad 100644 --- a/frappe/desk/page/activity/activity.js +++ b/frappe/desk/page/activity/activity.js @@ -80,7 +80,7 @@ frappe.pages['activity'].on_page_load = function(wrapper) { this.page.add_menu_item(__('Authentication Log'), function() { frappe.route_options = { - "user": user + "user": frappe.session.user } frappe.set_route('Report', "Authentication Log"); @@ -147,17 +147,18 @@ frappe.activity.Feed = Class.extend({ data.feed_type = data.comment_type || data.communication_medium; }, add_date_separator: function(row, data) { - var date = dateutil.str_to_obj(data.creation); + var date = frappe.datetime.str_to_obj(data.creation); var last = frappe.activity.last_feed_date; - if((last && dateutil.obj_to_str(last) != dateutil.obj_to_str(date)) || (!last)) { - var diff = dateutil.get_day_diff(dateutil.get_today(), dateutil.obj_to_str(date)); + if((last && frappe.datetime.obj_to_str(last) != frappe.datetime.obj_to_str(date)) || (!last)) { + var diff = frappe.datetime.get_day_diff(frappe.datetime.get_today(), frappe.datetime.obj_to_str(date)); + var pdate; if(diff < 1) { pdate = 'Today'; } else if(diff < 2) { pdate = 'Yesterday'; } else { - pdate = dateutil.global_date_format(date); + pdate = frappe.datetime.global_date_format(date); } data.date_sep = pdate; data.date_class = pdate=='Today' ? "date-indicator blue" : "date-indicator"; @@ -182,7 +183,7 @@ frappe.activity.render_heatmap = function(page) { var legend = []; var max = Math.max.apply(this, $.map(r.message, function(v) { return v })); var legend = [cint(max/5), cint(max*2/5), cint(max*3/5), cint(max*4/5)]; - heatmap = new CalHeatMap(); + var heatmap = new CalHeatMap(); heatmap.init({ itemSelector: ".heatmap", domain: "month", diff --git a/frappe/desk/page/chat/chat.js b/frappe/desk/page/chat/chat.js index 660fc31796..1e1287e36a 100644 --- a/frappe/desk/page/chat/chat.js +++ b/frappe/desk/page/chat/chat.js @@ -40,10 +40,10 @@ frappe.Chat = Class.extend({ setup_realtime: function() { var me = this; frappe.realtime.on('new_message', function(comment) { - if(comment.modified_by !== user || comment.communication_type === 'Bot') { + if(comment.modified_by !== frappe.session.user || comment.communication_type === 'Bot') { if(frappe.get_route()[0] === 'chat') { var current_contact = $(cur_page.page).find('[data-contact]').data('contact'); - var on_broadcast_page = current_contact === user; + var on_broadcast_page = current_contact === frappe.session.user; if ((current_contact == comment.owner) || (on_broadcast_page && comment.broadcast) || current_contact === 'Bot' && comment.communication_type === 'Bot') { diff --git a/frappe/email/doctype/auto_email_report/auto_email_report.js b/frappe/email/doctype/auto_email_report/auto_email_report.js index bad77c6939..27d363d83e 100644 --- a/frappe/email/doctype/auto_email_report/auto_email_report.js +++ b/frappe/email/doctype/auto_email_report/auto_email_report.js @@ -27,7 +27,7 @@ frappe.ui.form.on('Auto Email Report', { "/api/method/frappe.email.doctype.auto_email_report.auto_email_report.download?" +"name="+encodeURIComponent(frm.doc.name))); if(!w) { - msgprint(__("Please enable pop-ups")); return; + frappe.msgprint(__("Please enable pop-ups")); return; } }); frm.add_custom_button(__('Send Now'), function() { @@ -35,7 +35,7 @@ frappe.ui.form.on('Auto Email Report', { method: 'frappe.email.doctype.auto_email_report.auto_email_report.send_now', args: {name: frm.doc.name}, callback: function() { - msgprint(__('Scheduled to send')); + frappe.msgprint(__('Scheduled to send')); } }); }); @@ -68,7 +68,7 @@ frappe.ui.form.on('Auto Email Report', { var report_filters = frappe.query_reports[frm.doc.report].filters; frm.set_value('filter_meta', JSON.stringify(report_filters)); - report_filters_list = [] + var report_filters_list = [] $.each(report_filters, function(key, val){ // Remove break fieldtype from the filters if(val.fieldtype != 'Break') { diff --git a/frappe/email/doctype/email_alert/email_alert.js b/frappe/email/doctype/email_alert/email_alert.js index 2042b62679..f7fa09dea0 100755 --- a/frappe/email/doctype/email_alert/email_alert.js +++ b/frappe/email/doctype/email_alert/email_alert.js @@ -70,9 +70,9 @@ frappe.ui.form.on("Email Alert", { }, callback: function(r) { if(r.message) { - msgprint(r.message); + frappe.msgprint(r.message); } else { - msgprint(__('No alerts for today')); + frappe.msgprint(__('No alerts for today')); } } }); diff --git a/frappe/email/doctype/newsletter/newsletter.js b/frappe/email/doctype/newsletter/newsletter.js index 3f6ba4834d..15724e1b2d 100644 --- a/frappe/email/doctype/newsletter/newsletter.js +++ b/frappe/email/doctype/newsletter/newsletter.js @@ -4,7 +4,7 @@ cur_frm.cscript.refresh = function(doc) { if(window.erpnext) erpnext.toggle_naming_series(); if(!doc.__islocal && !cint(doc.email_sent) && !doc.__unsaved - && inList(frappe.boot.user.can_write, doc.doctype)) { + && in_list(frappe.boot.user.can_write, doc.doctype)) { cur_frm.add_custom_button(__('Send'), function() { return $c_obj(doc, 'send_emails', '', function(r) { cur_frm.refresh(); diff --git a/frappe/printing/doctype/print_format/print_format.js b/frappe/printing/doctype/print_format/print_format.js index 216d7ff481..bd06697725 100644 --- a/frappe/printing/doctype/print_format/print_format.js +++ b/frappe/printing/doctype/print_format/print_format.js @@ -9,12 +9,12 @@ frappe.ui.form.on("Print Format", { refresh: function(frm) { frm.set_intro(""); frm.toggle_enable(["html", "doc_type", "module"], false); - if (user==="Administrator" || frm.doc.standard==="No") { + if (frappe.session.user==="Administrator" || frm.doc.standard==="No") { frm.toggle_enable(["html", "doc_type", "module"], true); frm.enable_save(); } - if(frm.doc.standard==="Yes" && user !== "Administrator") { + if(frm.doc.standard==="Yes" && frappe.session.user !== "Administrator") { frm.set_intro(__("Please duplicate this to make changes")); } frm.trigger('render_buttons'); @@ -25,7 +25,7 @@ frappe.ui.form.on("Print Format", { if(!frm.doc.custom_format) { frm.add_custom_button(__("Edit Format"), function() { if(!frm.doc.doc_type) { - msgprint(__("Please select DocType first")); + frappe.msgprint(__("Please select DocType first")); return; } frappe.set_route("print-format-builder", frm.doc.name); @@ -42,7 +42,7 @@ frappe.ui.form.on("Print Format", { } }, custom_format: function(frm) { - value = frm.doc.custom_format ? 0:1; + var value = frm.doc.custom_format ? 0:1; frm.set_value('align_labels_left', value); frm.set_value('show_section_headings', value); frm.set_value('line_breaks', value); diff --git a/frappe/printing/page/print_format_builder/print_format_builder.js b/frappe/printing/page/print_format_builder/print_format_builder.js index 4910ea42fa..e1aad1a8b4 100644 --- a/frappe/printing/page/print_format_builder/print_format_builder.js +++ b/frappe/printing/page/print_format_builder/print_format_builder.js @@ -123,7 +123,7 @@ frappe.PrintFormatBuilder = Class.extend({ var doctype = me.doctype_input.get_value(), name = me.name_input.get_value(); if(!(doctype && name)) { - msgprint(__("Both DocType and Name required")); + frappe.msgprint(__("Both DocType and Name required")); return; } me.setup_new_print_format(doctype, name); @@ -272,7 +272,7 @@ frappe.PrintFormatBuilder = Class.extend({ set_column(); } else if(!in_list(["Section Break", "Column Break", "Fold"], f.fieldtype) - && f.label) { + && f.label) { if(!column) set_column(); if(f.fieldtype==="Table") { @@ -564,7 +564,7 @@ frappe.PrintFormatBuilder = Class.extend({ section.no_of_columns = 1; var $section = $(frappe.render_template("print_format_builder_section", - {section: section, me: me})) + {section: section, me: me})) .appendTo(me.page.main.find(".print-format-builder-layout")) me.setup_sortable_for_column($section.find(".print-format-builder-column").get(0)); @@ -587,8 +587,8 @@ frappe.PrintFormatBuilder = Class.extend({ var parent = $(this).parents(".print-format-builder-field:first"), doctype = parent.attr("data-doctype"), label = parent.attr("data-label"), - columns = parent.attr("data-columns").split(",") - column_names = $.map(columns, function(v) { return v.split("|")[0]; }); + columns = parent.attr("data-columns").split(","), + column_names = $.map(columns, function(v) { return v.split("|")[0]; }), widths = {}; $.each(columns, function(i, v) { @@ -702,7 +702,7 @@ frappe.PrintFormatBuilder = Class.extend({ }); // set existing content in input - content = $content.data('content') || ""; + var content = $content.data('content') || ""; if(content.indexOf(me.get_no_content())!==-1) content = ""; d.set_input("content", content); diff --git a/frappe/public/js/frappe/assets.js b/frappe/public/js/frappe/assets.js index 3fdbe85bdc..8cdbfeafe0 100644 --- a/frappe/public/js/frappe/assets.js +++ b/frappe/public/js/frappe/assets.js @@ -45,7 +45,7 @@ frappe.assets = { }); // clear assets - for(key in localStorage) { + for(var key in localStorage) { if(key.indexOf("desk_assets:")===0 || key.indexOf("_page:")===0 || key.indexOf("_doctype:")===0 || key.indexOf("preferred_breadcrumbs:")===0) { localStorage.removeItem(key); diff --git a/frappe/public/js/frappe/defaults.js b/frappe/public/js/frappe/defaults.js index 6e671f07ed..24ba5e630e 100644 --- a/frappe/public/js/frappe/defaults.js +++ b/frappe/public/js/frappe/defaults.js @@ -26,12 +26,12 @@ frappe.defaults = { return d; }, get_global_default: function(key) { - var d = sys_defaults[key]; + var d = frappe.sys_defaults[key]; if($.isArray(d)) d = d[0]; return d; }, get_global_defaults: function(key) { - var d = sys_defaults[key]; + var d = frappe.sys_defaults[key]; if(!$.isArray(d)) d = [d]; return d; }, diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js index 68aabfe200..5024a8234a 100644 --- a/frappe/public/js/frappe/desk.js +++ b/frappe/public/js/frappe/desk.js @@ -99,9 +99,9 @@ frappe.Application = Class.extend({ }); dialog.get_close_btn().toggle(false); }); - if (sys_defaults.email_user_password){ - var email_list = sys_defaults.email_user_password.split(','); - for (u in email_list) { + if (frappe.sys_defaults.email_user_password){ + var email_list = frappe.sys_defaults.email_user_password.split(','); + for (var u in email_list) { if (email_list[u]===frappe.user.name){ this.set_password(email_list[u]) } @@ -169,7 +169,7 @@ frappe.Application = Class.extend({ d.hide();//hide waiting indication if (!passed["message"]) { - show_alert("Login Failed please try again", 5); + frappe.show_alert("Login Failed please try again", 5); me.email_password_prompt(email_account, user, i) } else @@ -269,15 +269,13 @@ frappe.Application = Class.extend({ }, set_globals: function() { - // for backward compatibility frappe.session.user = frappe.boot.user.name; - frappe.session.user_fullname = frappe.boot.user.name; - user = frappe.boot.user.name; - user_fullname = frappe.user_info(user).fullname; - user_defaults = frappe.boot.user.defaults; - roles = frappe.boot.user.roles; - user_email = frappe.boot.user.email; - sys_defaults = frappe.boot.sysdefaults; + frappe.session.user_email = frappe.boot.user.email; + frappe.session.user_fullname = frappe.user_info().fullname; + + frappe.user_defaults = frappe.boot.user.defaults; + frappe.user_roles = frappe.boot.user.roles; + frappe.sys_defaults = frappe.boot.sysdefaults; frappe.ui.py_date_format = frappe.boot.sysdefaults.date_format.replace('dd', '%d').replace('mm', '%m').replace('yyyy', '%Y'); frappe.boot.user.last_selected_values = {}; }, @@ -285,7 +283,7 @@ frappe.Application = Class.extend({ // clear cached pages if timestamp is not found if(localStorage["page_info"]) { frappe.boot.allowed_pages = []; - page_info = JSON.parse(localStorage["page_info"]); + var page_info = JSON.parse(localStorage["page_info"]); $.each(frappe.boot.page_info, function(name, p) { if(!page_info[name] || (page_info[name].modified != p.modified)) { delete localStorage["_page:" + name]; @@ -293,19 +291,18 @@ frappe.Application = Class.extend({ frappe.boot.allowed_pages.push(name); }); } else { - frappe.boot.allowed_pages = keys(frappe.boot.page_info); + frappe.boot.allowed_pages = Object.keys(frappe.boot.page_info); } localStorage["page_info"] = JSON.stringify(frappe.boot.page_info); }, set_as_guest: function() { // for backward compatibility - user = {name:'Guest'}; - user = 'Guest'; - user_fullname = 'Guest'; - user_defaults = {}; - roles = ['Guest']; - user_email = ''; - sys_defaults = {}; + frappe.session.user = 'Guest'; + frappe.session.user_fullname = 'Guest'; + frappe.user_defaults = {}; + frappe.user_roles = ['Guest']; + frappe.session.user_email = ''; + frappe.sys_defaults = {}; }, make_page_container: function() { if($("#body_div").length) { @@ -564,12 +561,12 @@ frappe.get_desktop_icons = function(show_hidden, show_global) { } } - if(roles.indexOf('System Manager')!=-1) { + if(frappe.user_roles.includes('System Manager')) { var m = frappe.get_module('Setup'); if(show_module(m)) add_to_out(m) } - if(roles.indexOf('Administrator')!=-1) { + if(frappe.user_roles.includes('Administrator')) { var m = frappe.get_module('Core'); if(show_module(m)) add_to_out(m) } @@ -589,7 +586,7 @@ frappe.add_to_desktop = function(label, doctype, report) { }, callback: function(r) { if(r.message) { - show_alert(__("Added")); + frappe.show_alert(__("Added")); } } }); diff --git a/frappe/public/js/frappe/dom.js b/frappe/public/js/frappe/dom.js index 4ee6447a9a..939e5daa80 100644 --- a/frappe/public/js/frappe/dom.js +++ b/frappe/public/js/frappe/dom.js @@ -58,19 +58,19 @@ frappe.dom = { }, is_element_in_viewport: function (el) { - //special bonus for those using jQuery - if (typeof jQuery === "function" && el instanceof jQuery) { - el = el[0]; - } + //special bonus for those using jQuery + if (typeof jQuery === "function" && el instanceof jQuery) { + el = el[0]; + } - var rect = el.getBoundingClientRect(); + var rect = el.getBoundingClientRect(); - return ( - rect.top >= 0 - && rect.left >= 0 - // && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */ - // && rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */ - ); + return ( + rect.top >= 0 + && rect.left >= 0 + // && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */ + // && rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */ + ); }, set_style: function(txt, id) { @@ -115,7 +115,7 @@ frappe.dom = { css: function(ele, s) { if(ele && s) { $.extend(ele.style, s); - }; + } return ele; }, freeze: function(msg, css_class) { @@ -155,7 +155,7 @@ frappe.dom = { save_selection: function() { // via http://stackoverflow.com/questions/5605401/insert-link-in-contenteditable-element if (window.getSelection) { - sel = window.getSelection(); + var sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { var ranges = []; for (var i = 0, len = sel.rangeCount; i < len; ++i) { @@ -171,7 +171,7 @@ frappe.dom = { restore_selection: function(savedSel) { if (savedSel) { if (window.getSelection) { - sel = window.getSelection(); + var sel = window.getSelection(); sel.removeAllRanges(); for (var i = 0, len = savedSel.length; i < len; ++i) { sel.addRange(savedSel[i]); @@ -242,48 +242,48 @@ frappe._in = function(source, target) { })(jQuery); (function($) { - function pasteIntoInput(el, text) { - el.focus(); - if (typeof el.selectionStart == "number") { - var val = el.value; - var selStart = el.selectionStart; - el.value = val.slice(0, selStart) + text + val.slice(el.selectionEnd); - el.selectionEnd = el.selectionStart = selStart + text.length; - } else if (typeof document.selection != "undefined") { - var textRange = document.selection.createRange(); - textRange.text = text; - textRange.collapse(false); - textRange.select(); - } - } + function pasteIntoInput(el, text) { + el.focus(); + if (typeof el.selectionStart == "number") { + var val = el.value; + var selStart = el.selectionStart; + el.value = val.slice(0, selStart) + text + val.slice(el.selectionEnd); + el.selectionEnd = el.selectionStart = selStart + text.length; + } else if (typeof document.selection != "undefined") { + var textRange = document.selection.createRange(); + textRange.text = text; + textRange.collapse(false); + textRange.select(); + } + } - function allowTabChar(el) { - $(el).keydown(function(e) { - if (e.which == 9) { - pasteIntoInput(this, "\t"); - return false; - } - }); + function allowTabChar(el) { + $(el).keydown(function(e) { + if (e.which == 9) { + pasteIntoInput(this, "\t"); + return false; + } + }); - // For Opera, which only allows suppression of keypress events, not keydown - $(el).keypress(function(e) { - if (e.which == 9) { - return false; - } - }); - } + // For Opera, which only allows suppression of keypress events, not keydown + $(el).keypress(function(e) { + if (e.which == 9) { + return false; + } + }); + } - $.fn.allowTabs = function() { - if (this.jquery) { - this.each(function() { - if (this.nodeType == 1) { - var nodeName = this.nodeName.toLowerCase(); - if (nodeName == "textarea" || (nodeName == "input" && this.type == "text")) { - allowTabChar(this); - } - } - }) - } - return this; - } + $.fn.allowTabs = function() { + if (this.jquery) { + this.each(function() { + if (this.nodeType == 1) { + var nodeName = this.nodeName.toLowerCase(); + if (nodeName == "textarea" || (nodeName == "input" && this.type == "text")) { + allowTabChar(this); + } + } + }) + } + return this; + } })(jQuery); diff --git a/frappe/public/js/frappe/feedback.js b/frappe/public/js/frappe/feedback.js index 7a14c96fde..7a2e5d8156 100644 --- a/frappe/public/js/frappe/feedback.js +++ b/frappe/public/js/frappe/feedback.js @@ -3,7 +3,7 @@ frappe.provide("frappe.utils") frappe.utils.Feedback = Class.extend({ resend_feedback_request: function(doc) { /* resend the feedback request email */ - args = { + var args = { reference_name: doc.reference_name, reference_doctype: doc.reference_doctype, request: doc.feedback_request, @@ -14,12 +14,12 @@ frappe.utils.Feedback = Class.extend({ manual_feedback_request: function(doc) { var me = this; - args = { + var args = { reference_doctype: doc.doctype, reference_name: doc.name } if(frappe.boot.feedback_triggers[doc.doctype]) { - feedback_trigger = frappe.boot.feedback_triggers[doc.doctype] + var feedback_trigger = frappe.boot.feedback_triggers[doc.doctype] $.extend(args, { trigger: feedback_trigger }) me.get_feedback_request_details(args, false) } else{ @@ -43,7 +43,7 @@ frappe.utils.Feedback = Class.extend({ make_feedback_request_dialog: function(args, is_resend) { var me = this; - dialog = new frappe.ui.Dialog({ + var dialog = new frappe.ui.Dialog({ title: __("{0} Feedback Request", [ is_resend? "Resend": "Send" ]), fields: [ { diff --git a/frappe/public/js/frappe/form/control.js b/frappe/public/js/frappe/form/control.js index a6981d437a..3a9af71a8f 100755 --- a/frappe/public/js/frappe/form/control.js +++ b/frappe/public/js/frappe/form/control.js @@ -476,7 +476,7 @@ frappe.ui.form.ControlData = frappe.ui.form.ControlInput.extend({ callback(""); return; } - v1 = '' + var v1 = '' // phone may start with + and must only have numbers later, '-' and ' ' are stripped v = v.replace(/ /g, '').replace(/-/g, '').replace(/\(/g, '').replace(/\)/g, ''); @@ -507,7 +507,7 @@ frappe.ui.form.ControlData = frappe.ui.form.ControlInput.extend({ var invalid_email = false; email_list.forEach(function(email) { if (!validate_email(email)) { - msgprint(__("Invalid Email: {0}", [email])); + frappe.msgprint(__("Invalid Email: {0}", [email])); invalid_email = true; } }); @@ -671,18 +671,18 @@ frappe.ui.form.ControlDate = frappe.ui.form.ControlData.extend({ }, parse: function(value) { if(value) { - return dateutil.user_to_str(value); + return frappe.datetime.user_to_str(value); } }, format_for_input: function(value) { if(value) { - return dateutil.str_to_user(value); + return frappe.datetime.str_to_user(value); } return ""; }, validate: function(value, callback) { - if(value && !dateutil.validate(value)) { - msgprint (__("Date must be in format: {0}", [sys_defaults.date_format || "yyyy-mm-dd"])); + if(value && !frappe.datetime.validate(value)) { + frappe.msgprint(__("Date must be in format: {0}", [frappe.sys_defaults.date_format || "yyyy-mm-dd"])); callback(""); return; } @@ -733,14 +733,14 @@ frappe.ui.form.ControlDatetime = frappe.ui.form.ControlDate.extend({ parse: function(value) { if(value) { // parse and convert - value = dateutil.convert_to_system_tz(dateutil.user_to_str(value)); + value = frappe.datetime.convert_to_system_tz(frappe.datetime.user_to_str(value)); } return value; }, format_for_input: function(value) { if(value) { // convert and format - value = dateutil.str_to_user(dateutil.convert_to_user_tz(value)); + value = frappe.datetime.str_to_user(frappe.datetime.convert_to_user_tz(value)); } return value || ""; } @@ -789,16 +789,16 @@ frappe.ui.form.ControlDateRange = frappe.ui.form.ControlData.extend({ }, parse: function(value) { if(value && (value.indexOf(',') !== -1 || value.indexOf('to') !== -1)) { - vals = value.split(/[( to )(,)]/) - from_date = moment(dateutil.user_to_obj(vals[0])).format('YYYY-MM-DD'); - to_date = moment(dateutil.user_to_obj(vals[vals.length-1])).format('YYYY-MM-DD'); + var vals = value.split(/[( to )(,)]/) + var from_date = moment(frappe.datetime.user_to_obj(vals[0])).format('YYYY-MM-DD'); + var to_date = moment(frappe.datetime.user_to_obj(vals[vals.length-1])).format('YYYY-MM-DD'); return [from_date, to_date]; } }, format_for_input: function(value,value2) { if(value && value2) { - value = dateutil.str_to_user(value); - value2 = dateutil.str_to_user(value2); + value = frappe.datetime.str_to_user(value); + value2 = frappe.datetime.str_to_user(value2); return value + " to " + value2 } return ""; @@ -1025,7 +1025,7 @@ frappe.ui.form.ControlAttach = frappe.ui.form.ControlData.extend({ me.dialog.hide(); me.frm.save(); } else { - msgprint(__("Please attach a file or set a URL")); + frappe.msgprint(__("Please attach a file or set a URL")); } }, callback: function(attachment, r) { @@ -1346,7 +1346,7 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({ return true; }, item: function (item, input) { - d = this.get_item(item.value); + var d = this.get_item(item.value); if(!d.label) { d.label = d.value; } var _label = (me.translate_values) ? __(d.label) : d.label; @@ -1408,7 +1408,7 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({ value: "create_new__link_option", action: me.new_doc }) - }; + } // advanced search r.results.push({ label: "" @@ -1591,7 +1591,7 @@ frappe.ui.form.ControlDynamicLink = frappe.ui.form.ControlLink.extend({ } var options = frappe.model.get_value(this.df.parent, this.docname, this.df.options); // if(!options) { - // msgprint(__("Please set {0} first", + // frappe.msgprint(__("Please set {0} first", // [frappe.meta.get_docfield(this.df.parent, this.df.options, this.docname).label])); // } return options; @@ -1797,7 +1797,7 @@ frappe.ui.form.ControlTextEditor = frappe.ui.form.ControlCode.extend({ me.editor.summernote('insertImage', selected); me.image_dialog.hide(); } else { - msgprint(__("Please attach a file or set a URL")); + frappe.msgprint(__("Please attach a file or set a URL")); } }, callback: function(attachment, r) { @@ -1908,9 +1908,9 @@ frappe.ui.form.ControlSignature = frappe.ui.form.ControlData.extend({ // make jSignature field this.$pad = $('
') - .appendTo(me.wrapper) - .jSignature({height:300, width: "100%", "lineWidth": 0.8}) - .on('change', this.on_save_sign.bind(this)); + .appendTo(me.wrapper) + .jSignature({height:300, width: "100%", "lineWidth": 0.8}) + .on('change', this.on_save_sign.bind(this)); this.img_wrapper = $(`
diff --git a/frappe/public/js/frappe/form/dashboard.js b/frappe/public/js/frappe/form/dashboard.js index 8fa5a526ae..6b5f5b239e 100644 --- a/frappe/public/js/frappe/form/dashboard.js +++ b/frappe/public/js/frappe/form/dashboard.js @@ -259,7 +259,7 @@ frappe.ui.form.Dashboard = Class.extend({ group.items.forEach(function(item) { items.push(item); }); }); - method = this.data.method || 'frappe.desk.notifications.get_open_count'; + var method = this.data.method || 'frappe.desk.notifications.get_open_count'; frappe.call({ type: "GET", @@ -359,7 +359,7 @@ frappe.ui.form.Dashboard = Class.extend({ } else { heatmap_message.addClass('hidden'); } - } + } }, add_indicator: function(label, color) { @@ -370,6 +370,7 @@ frappe.ui.form.Dashboard = Class.extend({ // set colspan var indicators = this.stats_area_row.find('.indicator-column'); var n_indicators = indicators.length + 1; + var colspan; if(n_indicators > 4) { colspan = 3 } else { colspan = 12 / n_indicators; } diff --git a/frappe/public/js/frappe/form/footer/assign_to.js b/frappe/public/js/frappe/form/footer/assign_to.js index 05259e541f..950443de57 100644 --- a/frappe/public/js/frappe/form/footer/assign_to.js +++ b/frappe/public/js/frappe/form/footer/assign_to.js @@ -55,13 +55,13 @@ frappe.ui.form.AssignTo = Class.extend({ ', info)) .insertBefore(this.parent.find('.add-assignment')); - if(d[i].owner===user) { + if(d[i].owner===frappe.session.user) { me.primary_action = this.frm.page.add_menu_item(__("Assignment Complete"), function() { - me.remove(user); + me.remove(frappe.session.user); }, "fa fa-check", "btn-success") } - if(!(d[i].owner === user || me.frm.perm[0].write)) { + if(!(d[i].owner === frappe.session.user || me.frm.perm[0].write)) { me.parent.find('a.close').remove(); } } @@ -164,7 +164,7 @@ frappe.ui.form.AssignToDialog = Class.extend({ toggle_myself: function(myself) { var me = this; if($(myself).prop("checked")) { - me.set_value("assign_to", user); + me.set_value("assign_to", frappe.session.user); me.set_value("notify", 0); me.get_field("notify").$wrapper.toggle(false); me.get_field("assign_to").$wrapper.toggle(false); diff --git a/frappe/public/js/frappe/form/footer/attachments.js b/frappe/public/js/frappe/form/footer/attachments.js index 59138c5500..5a37d705cc 100644 --- a/frappe/public/js/frappe/form/footer/attachments.js +++ b/frappe/public/js/frappe/form/footer/attachments.js @@ -18,7 +18,7 @@ frappe.ui.form.Attachments = Class.extend({ }, max_reached: function() { // no of attachments - var n = keys(this.get_attachments()).length; + var n = Object.keys(this.get_attachments()).length; // button if the number of attachments is less than max if(n < this.frm.meta.max_attachments || !this.frm.meta.max_attachments) { @@ -135,7 +135,7 @@ frappe.ui.form.Attachments = Class.extend({ callback: function(r,rt) { if(r.exc) { if(!r._server_messages) - msgprint(__("There were errors")); + frappe.msgprint(__("There were errors")); return; } me.remove_fileid(fileid); @@ -207,13 +207,13 @@ frappe.ui.form.Attachments = Class.extend({ }); frappe.ui.get_upload_dialog = function(opts){ - dialog = new frappe.ui.Dialog({ - title: __('Upload Attachment'), + var dialog = new frappe.ui.Dialog({ + title: __('Upload Attachment'), no_focus: true, - fields: [ + fields: [ {fieldtype: "Section Break"}, {"fieldtype": "Link" , "fieldname": "file" , "label": __("Select uploaded file"), "options": "File"}, - ], + ], }); var btn = dialog.set_primary_action(__("Attach")); @@ -224,22 +224,22 @@ frappe.ui.get_upload_dialog = function(opts){ var fd = dialog.fields_dict; $(fd.file.input).change(function() { - frappe.call({ + frappe.call({ 'method': 'frappe.client.get_value', 'args': { - 'doctype': 'File', - 'fieldname': ['file_url','file_name','is_private'], - 'filters': { - 'name': dialog.get_value("file") - } + 'doctype': 'File', + 'fieldname': ['file_url','file_name','is_private'], + 'filters': { + 'name': dialog.get_value("file") + } }, callback: function(r){ if(!r.message) return; - dialog.$wrapper.find('[name="file_url"]').val(r.message.file_url); + dialog.$wrapper.find('[name="file_url"]').val(r.message.file_url); dialog.$wrapper.find('.private-file input').prop('checked', r.message.is_private); opts.args.filename = r.message.file_name } - }); + }); }); frappe.upload.make({ parent: upload_area, diff --git a/frappe/public/js/frappe/form/footer/timeline.js b/frappe/public/js/frappe/form/footer/timeline.js index 0a9e371f3f..afecc8299d 100644 --- a/frappe/public/js/frappe/form/footer/timeline.js +++ b/frappe/public/js/frappe/form/footer/timeline.js @@ -76,10 +76,10 @@ frappe.ui.form.Timeline = Class.extend({ setup_email_button: function() { var me = this; - selector = this.frm.doctype === "Communication"? ".btn-reply-email": ".btn-new-email" + var selector = this.frm.doctype === "Communication"? ".btn-reply-email": ".btn-new-email" this.email_button = this.wrapper.find(selector) .on("click", function() { - args = { + var args = { doc: me.frm.doc, frm: me.frm, recipients: me.get_recipient() @@ -309,7 +309,7 @@ frappe.ui.form.Timeline = Class.extend({ c._liked_by = JSON.parse(c._liked_by || "[]"); } - c.liked_by_user = c._liked_by.indexOf(user)!==-1; + c.liked_by_user = c._liked_by.indexOf(frappe.session.user)!==-1; } } @@ -453,7 +453,7 @@ frappe.ui.form.Timeline = Class.extend({ p[0], me.frm.docname); if(df && !df.hidden) { - field_display_status = frappe.perm.get_field_display_status(df, + var field_display_status = frappe.perm.get_field_display_status(df, null, me.frm.perm); if(field_display_status === 'Read' || field_display_status === 'Write') { @@ -535,7 +535,7 @@ frappe.ui.form.Timeline = Class.extend({ reference_doctype: this.frm.doctype, reference_name: this.frm.docname, content: comment, - sender: user + sender: frappe.session.user } }, btn: btn, diff --git a/frappe/public/js/frappe/form/form_viewers.js b/frappe/public/js/frappe/form/form_viewers.js index 222705fb61..b29ceb7584 100644 --- a/frappe/public/js/frappe/form/form_viewers.js +++ b/frappe/public/js/frappe/form/form_viewers.js @@ -43,9 +43,9 @@ frappe.ui.form.Viewers = Class.extend({ if (data_updated && new_users.length) { // new user viewing this document, who wasn't viewing in the past if (new_users.length===1) { - show_alert(__("{0} is currently viewing this document", [new_users[0]])); + frappe.show_alert(__("{0} is currently viewing this document", [new_users[0]])); } else { - show_alert(__("{0} are currently viewing this document", [frappe.utils.comma_and(new_users)])); + frappe.show_alert(__("{0} are currently viewing this document", [frappe.utils.comma_and(new_users)])); } } @@ -56,15 +56,9 @@ frappe.ui.form.set_viewers = function(data) { var doctype = data.doctype; var docname = data.docname; var past_viewers = (frappe.model.get_docinfo(doctype, docname).viewers || {}).past || []; - var new_viewers = []; var viewers = data.viewers || []; - for (i=0, l=viewers.length; i < l; i++) { - var username = viewers[i]; - if (past_viewers.indexOf(username)===-1) { - new_viewers.push(username); - } - } + var new_viewers = viewers.filter(viewer => !past_viewers.includes(viewer)); frappe.model.set_docinfo(doctype, docname, "viewers", { past: past_viewers.concat(new_viewers), diff --git a/frappe/public/js/frappe/form/formatters.js b/frappe/public/js/frappe/form/formatters.js index d25faa21e7..c23d440f47 100644 --- a/frappe/public/js/frappe/form/formatters.js +++ b/frappe/public/js/frappe/form/formatters.js @@ -99,7 +99,7 @@ frappe.form.formatters = { }, Date: function(value) { if (value) { - value = dateutil.str_to_user(value); + value = frappe.datetime.str_to_user(value); // handle invalid date if (value==="Invalid date") { value = null; @@ -110,7 +110,7 @@ frappe.form.formatters = { }, Datetime: function(value) { if(value) { - var m = moment(dateutil.convert_to_user_tz(value)); + var m = moment(frappe.datetime.convert_to_user_tz(value)); if(frappe.boot.sysdefaults.time_zone) { m = m.tz(frappe.boot.sysdefaults.time_zone); } @@ -182,7 +182,7 @@ frappe.form.formatters = { return "
" + (value==null ? "" : $("
").text(value).html()) + "
" }, WorkflowState: function(value) { - workflow_state = frappe.get_doc("Workflow State", value); + var workflow_state = frappe.get_doc("Workflow State", value); if(workflow_state) { return repl("' + - this.row_check_html + - ' ' + txt + '
') + this.row_index = $( + `
+ ${this.row_check_html} + ${txt}
`) .appendTo(this.row) .on('click', function(e) { if(!$(e.target).hasClass('grid-row-check')) { @@ -852,7 +853,7 @@ frappe.ui.form.GridRow = Class.extend({ add_class += (["Check"].indexOf(df.fieldtype)!==-1) ? " text-center": ""; - $col = $('
') + var $col = $('
') .attr("data-fieldname", df.fieldname) .attr("data-fieldtype", df.fieldtype) .data("df", df) @@ -861,7 +862,7 @@ frappe.ui.form.GridRow = Class.extend({ if(frappe.ui.form.editable_row===me) { return; } - out = me.toggle_editable_row(); + var out = me.toggle_editable_row(); var col = this; setTimeout(function() { $(col).find('input[type="Text"]:first').focus(); @@ -890,7 +891,7 @@ frappe.ui.form.GridRow = Class.extend({ if(frappe.ui.form.editable_row && frappe.ui.form.editable_row !== this) { frappe.ui.form.editable_row.toggle_editable_row(false); - }; + } this.row.toggleClass('editable-row', true); @@ -964,6 +965,7 @@ frappe.ui.form.GridRow = Class.extend({ var me = this; if(field.$input) { field.$input.on('keydown', function(e) { + var { TAB, UP_ARROW, DOWN_ARROW } = frappe.ui.keyCode; if(!in_list([TAB, UP_ARROW, DOWN_ARROW], e.which)) { return; } diff --git a/frappe/public/js/frappe/form/layout.js b/frappe/public/js/frappe/form/layout.js index f81ba69e36..fe92dae364 100644 --- a/frappe/public/js/frappe/form/layout.js +++ b/frappe/public/js/frappe/form/layout.js @@ -225,7 +225,7 @@ frappe.ui.form.Layout = Class.extend({ if(me.frm) { fieldobj.perm = me.frm.perm; } - }; + } refresh && fieldobj.refresh && fieldobj.refresh(); } }, @@ -249,7 +249,7 @@ frappe.ui.form.Layout = Class.extend({ }, handle_tab: function(doctype, fieldname, shift) { var me = this, - grid_row = null; + grid_row = null, prev = null, fields = me.fields_list, in_grid = false, @@ -357,7 +357,7 @@ frappe.ui.form.Layout = Class.extend({ // build dependants' dictionary var has_dep = false; - for(fkey in this.fields_list) { + for(var fkey in this.fields_list) { var f = this.fields_list[fkey]; f.dependencies_clear = true; if(f.df.depends_on) { @@ -409,7 +409,7 @@ frappe.ui.form.Layout = Class.extend({ if(expression.substr(0,5)=='eval:') { out = eval(expression.substr(5)); - } else if(expression.substr(0,3)=='fn:' && me.frm) { + } else if(expression.substr(0,3)=='fn:' && this.frm) { out = this.frm.script_manager.trigger(expression.substr(3), this.doctype, this.docname); } else { var value = doc[expression]; diff --git a/frappe/public/js/frappe/form/link_selector.js b/frappe/public/js/frappe/form/link_selector.js index be4d73d6b0..6702597776 100644 --- a/frappe/public/js/frappe/form/link_selector.js +++ b/frappe/public/js/frappe/form/link_selector.js @@ -16,6 +16,8 @@ frappe.ui.form.LinkSelector = Class.extend({ } }, make: function() { + var me = this; + this.dialog = new frappe.ui.Dialog({ title: __("Select {0}", [(this.doctype=='[Select]') ? __("value") : __(this.doctype)]), fields: [ @@ -32,7 +34,6 @@ frappe.ui.form.LinkSelector = Class.extend({ me.search(); } }); - me = this; if(this.txt) this.dialog.fields_dict.txt.set_input(this.txt); @@ -118,7 +119,7 @@ frappe.ui.form.LinkSelector = Class.extend({ $.each(me.target.frm.doc[me.target.df.fieldname] || [], function(i, d) { if(d[me.fieldname]===value) { frappe.model.set_value(d.doctype, d.name, me.qty_fieldname, data.qty); - show_alert(__("Added {0} ({1})", [value, d[me.qty_fieldname]])); + frappe.show_alert(__("Added {0} ({1})", [value, d[me.qty_fieldname]])); updated = true; return false; } @@ -129,7 +130,7 @@ frappe.ui.form.LinkSelector = Class.extend({ frappe.after_ajax(function() { setTimeout(function() { frappe.model.set_value(d.doctype, d.name, me.qty_fieldname, data.qty); - show_alert(__("Added {0} ({1})", [value, data.qty])); + frappe.show_alert(__("Added {0} ({1})", [value, data.qty])); }, 100); }); } @@ -137,7 +138,7 @@ frappe.ui.form.LinkSelector = Class.extend({ } else { var d = me.target.add_new_row(); frappe.model.set_value(d.doctype, d.name, me.fieldname, value); - show_alert(__("{0} added", [value])); + frappe.show_alert(__("{0} added", [value])); } } }); diff --git a/frappe/public/js/frappe/form/print.js b/frappe/public/js/frappe/form/print.js index 555c85c9d9..991a6622fb 100644 --- a/frappe/public/js/frappe/form/print.js +++ b/frappe/public/js/frappe/form/print.js @@ -70,9 +70,10 @@ frappe.ui.form.PrintPreview = Class.extend({ +"&name="+encodeURIComponent(me.frm.doc.name) +"&format="+me.selected_format() +"&no_letterhead="+(me.with_letterhead() ? "0" : "1") - +(me.lang_code ? ("&_lang="+me.lang_code) : ""))); + +(me.lang_code ? ("&_lang="+me.lang_code) : "")) + ); if(!w) { - msgprint(__("Please enable pop-ups")); return; + frappe.msgprint(__("Please enable pop-ups")); return; } } }); @@ -138,7 +139,7 @@ frappe.ui.form.PrintPreview = Class.extend({ +"&no_letterhead="+(me.with_letterhead() ? "0" : "1") +(me.lang_code ? ("&_lang="+me.lang_code) : ""))); if(!w) { - msgprint(__("Please enable pop-ups")); return; + frappe.msgprint(__("Please enable pop-ups")); return; } }, get_print_html: function(callback) { @@ -227,7 +228,7 @@ frappe.ui.get_print_settings = function(pdf, callback, letter_head) { ? locals[":Company"][frappe.defaults.get_default('company')]["default_letter_head"] : ''; - columns = [{ + var columns = [{ fieldtype: "Check", fieldname: "with_letter_head", label: __("With Letter head") diff --git a/frappe/public/js/frappe/form/quick_entry.js b/frappe/public/js/frappe/form/quick_entry.js index 2e830ce54d..a267839884 100644 --- a/frappe/public/js/frappe/form/quick_entry.js +++ b/frappe/public/js/frappe/form/quick_entry.js @@ -66,7 +66,7 @@ frappe.ui.form.quick_entry = function(doctype, success) { if(data) { dialog.working = true; - values = update_doc(); + var values = update_doc(); frappe.call({ method: "frappe.client.insert", args: { diff --git a/frappe/public/js/frappe/form/save.js b/frappe/public/js/frappe/form/save.js index e75383e010..d0890cbd3a 100644 --- a/frappe/public/js/frappe/form/save.js +++ b/frappe/public/js/frappe/form/save.js @@ -76,7 +76,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) { if(newname) { doc.__newname = strip(newname); } else { - msgprint(__("Name is required")); + frappe.msgprint(__("Name is required")); throw "name required"; } @@ -142,7 +142,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) { } message = message + '

  • ' + error_fields.join('
  • ') + "
"; - msgprint({ + frappe.msgprint({ message: message, indicator: 'red', title: __('Missing Fields') @@ -218,7 +218,7 @@ frappe.ui.form.update_calling_link = function(newdoc) { }}); } else { frappe._from_link.set_value(newdoc.name); - } + } // refresh field frappe._from_link.refresh(); diff --git a/frappe/public/js/frappe/form/script_manager.js b/frappe/public/js/frappe/form/script_manager.js index 146ec25a8e..56b6d00948 100644 --- a/frappe/public/js/frappe/form/script_manager.js +++ b/frappe/public/js/frappe/form/script_manager.js @@ -70,7 +70,7 @@ frappe.ui.form.ScriptManager = Class.extend({ var me = this; doctype = doctype || this.frm.doctype; name = name || this.frm.docname; - handlers = this.get_handlers(event_name, doctype, name, callback); + var handlers = this.get_handlers(event_name, doctype, name, callback); if(callback) handlers.push(callback); return $.when.apply($, $.map(handlers, function(fn) { return fn(); })); @@ -138,7 +138,7 @@ frappe.ui.form.ScriptManager = Class.extend({ this.trigger('setup'); }, log_error: function(caller, e) { - show_alert("Error in Client Script."); + frappe.show_alert("Error in Client Script."); console.group && console.group(); console.log("----- error in client script -----"); console.log("method: " + caller); diff --git a/frappe/public/js/frappe/form/share.js b/frappe/public/js/frappe/form/share.js index 41f811953f..c241d8783e 100644 --- a/frappe/public/js/frappe/form/share.js +++ b/frappe/public/js/frappe/form/share.js @@ -117,7 +117,7 @@ frappe.ui.form.Share = Class.extend({ options: "User", filters: { "user_type": "System User", - "name": ["!=", user] + "name": ["!=", frappe.session.user] } }, only_input: true, @@ -164,7 +164,7 @@ frappe.ui.form.Share = Class.extend({ var user = $(this).parents(".shared-user:first").attr("data-user") || "", value = $(this).prop("checked") ? 1 : 0, property = $(this).attr("name") - everyone = cint($(this).parents(".shared-user:first").attr("data-everyone")); + var everyone = cint($(this).parents(".shared-user:first").attr("data-everyone")); frappe.call({ method: "frappe.share.set_permission", diff --git a/frappe/public/js/frappe/form/sidebar.js b/frappe/public/js/frappe/form/sidebar.js index 080e6cd898..ea3f1737bb 100644 --- a/frappe/public/js/frappe/form/sidebar.js +++ b/frappe/public/js/frappe/form/sidebar.js @@ -151,11 +151,11 @@ frappe.ui.form.Sidebar = Class.extend({ }, setup_ratings: function() { - _ratings = this.frm.get_docinfo().rating || 0; + var _ratings = this.frm.get_docinfo().rating || 0; if(_ratings) { this.ratings.removeClass("hide"); - rating_icons = frappe.render_template("rating_icons", {rating: _ratings, show_label: false}); + var rating_icons = frappe.render_template("rating_icons", {rating: _ratings, show_label: false}); this.ratings.find(".rating-icons").html(rating_icons); } } diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index 80ee2d7341..aa0a822c0b 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -114,7 +114,7 @@ frappe.ui.form.Toolbar = Class.extend({ // Print if(!is_submittable || docstatus == 1 || (allow_print_for_cancelled && docstatus == 2)|| - (allow_print_for_draft && docstatus == 0)) { + (allow_print_for_draft && docstatus == 0)) { if(frappe.model.can_print(null, me.frm)) { this.page.add_menu_item(__("Print"), function() { me.frm.print_doc();}, true); @@ -159,7 +159,7 @@ frappe.ui.form.Toolbar = Class.extend({ me.frm.savetrash();}, true); } - if(in_list(roles, "System Manager")) { + if(frappe.user_roles.includes("System Manager")) { this.page.add_menu_item(__("Customize"), function() { frappe.set_route("Form", "Customize Form", { doc_type: me.frm.doctype @@ -178,7 +178,7 @@ frappe.ui.form.Toolbar = Class.extend({ if(!this.frm.doc.__unsaved) { if(is_submittable && docstatus == 1) { this.page.add_menu_item(__("Request Feedback"), function() { - feedback = new frappe.utils.Feedback(); + var feedback = new frappe.utils.Feedback(); feedback.manual_feedback_request(me.frm.doc); }, true) } diff --git a/frappe/public/js/frappe/form/workflow.js b/frappe/public/js/frappe/form/workflow.js index 69bc1092d6..e3fde7ae84 100644 --- a/frappe/public/js/frappe/form/workflow.js +++ b/frappe/public/js/frappe/form/workflow.js @@ -73,7 +73,7 @@ frappe.ui.form.States = Class.extend({ } $.each(frappe.workflow.get_transitions(this.frm.doctype, state), function(i, d) { - if(in_list(roles, d.allowed)) { + if(frappe.user_roles.includes(d.allowed)) { added = true; me.frm.page.add_action_item(__(d.action), function() { var action = d.action; @@ -112,10 +112,10 @@ frappe.ui.form.States = Class.extend({ } else if(new_docstatus==2 && me.frm.doc.docstatus==1) { me.frm.savecancel(null, success, on_error); } else { - msgprint(__("Document Status transition from ") + me.frm.doc.docstatus + " " + frappe.msgprint(__("Document Status transition from ") + me.frm.doc.docstatus + " " + __("to") + new_docstatus + " " + __("is not allowed.")); - msgprint(__("Document Status transition from {0} to {1} is not allowed", [me.frm.doc.docstatus, new_docstatus])); + frappe.msgprint(__("Document Status transition from {0} to {1} is not allowed", [me.frm.doc.docstatus, new_docstatus])); return false; } diff --git a/frappe/public/js/frappe/list/list_renderer.js b/frappe/public/js/frappe/list/list_renderer.js index 1f0209f74b..4fa52171e1 100644 --- a/frappe/public/js/frappe/list/list_renderer.js +++ b/frappe/public/js/frappe/list/list_renderer.js @@ -108,8 +108,8 @@ frappe.views.ListRenderer = Class.extend({ } // enabled / disabled - if (frappe.meta.has_field(this.doctype, 'enabled')) { add_field('enabled'); }; - if (frappe.meta.has_field(this.doctype, 'disabled')) { add_field('disabled'); }; + if (frappe.meta.has_field(this.doctype, 'enabled')) { add_field('enabled'); } + if (frappe.meta.has_field(this.doctype, 'disabled')) { add_field('disabled'); } // add workflow field (as priority) this.workflow_state_fieldname = frappe.workflow.get_state_fieldname(this.doctype); @@ -133,7 +133,7 @@ frappe.views.ListRenderer = Class.extend({ add_field(df.options.split(':')[1]); } else { add_field(df.options); - }; + } } } }); @@ -424,7 +424,7 @@ frappe.views.ListRenderer = Class.extend({ this.prepare_when(data, data.modified); // nulls as strings - for (key in data) { + for (var key in data) { if (data[key] == null) { data[key] = ''; } @@ -485,8 +485,8 @@ frappe.views.ListRenderer = Class.extend({ prepare_when: function (data, date_str) { if (!date_str) date_str = data.modified; // when - data.when = (dateutil.str_to_user(date_str)).split(' ')[0]; - var diff = dateutil.get_diff(dateutil.get_today(), date_str.split(' ')[0]); + data.when = (frappe.datetime.str_to_user(date_str)).split(' ')[0]; + var diff = frappe.datetime.get_diff(frappe.datetime.get_today(), date_str.split(' ')[0]); if (diff === 0) { data.when = comment_when(date_str); } diff --git a/frappe/public/js/frappe/list/list_sidebar.js b/frappe/public/js/frappe/list/list_sidebar.js index 58ce23209d..375bd0d6c4 100644 --- a/frappe/public/js/frappe/list/list_sidebar.js +++ b/frappe/public/js/frappe/list/list_sidebar.js @@ -212,7 +212,7 @@ frappe.views.ListSidebar = Class.extend({ .then(function() { d.hide(); }, function(err) { - msgprint(err); + frappe.msgprint(err); }); } }); @@ -273,15 +273,15 @@ frappe.views.ListSidebar = Class.extend({ var $dropdown = this.page.sidebar.find('.email-account-dropdown'); var divider = false; - if(has_common(roles, ["System Manager", "Administrator"])) { + if(has_common(frappe.user_roles, ["System Manager", "Administrator"])) { $('') .appendTo($dropdown) } - accounts = frappe.boot.email_accounts; + var accounts = frappe.boot.email_accounts; accounts.forEach(function(account) { - email_account = (account.email_id == "All Accounts")? "All Accounts": account.email_account; + var email_account = (account.email_id == "All Accounts")? "All Accounts": account.email_account; var route = ["List", "Communication", "Inbox", email_account].join('/'); if(!divider) { $('').appendTo($dropdown); @@ -318,9 +318,9 @@ frappe.views.ListSidebar = Class.extend({ me.defined_category = r.message; if (r.message.defined_cat ){ me.defined_category = r.message.defined_cat - me.cats = {}; + me.cats = {}; //structure the tag categories - for (i in me.defined_category){ + for (var i in me.defined_category){ if (me.cats[me.defined_category[i].category]===undefined){ me.cats[me.defined_category[i].category]=[me.defined_category[i].tag]; }else{ diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index e673a297c4..af811faa4b 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -302,7 +302,7 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ set_filters: function (filters) { var me = this; $.each(filters, function (i, f) { - hidden = false + var hidden = false if (f.length === 3) { f = [me.doctype, f[0], f[1], f[2]] } else if (f.length === 5) { @@ -377,7 +377,7 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ if (this.list_renderer.settings.list_view_doc) { this.list_renderer.settings.list_view_doc(this); } else { - doctype = this.list_renderer.no_result_doctype? this.list_renderer.no_result_doctype: this.doctype + var doctype = this.list_renderer.no_result_doctype? this.list_renderer.no_result_doctype: this.doctype $(this.wrapper).on('click', `button[list_view_doc='${doctype}']`, function () { if (me.list_renderer.make_new_doc) me.list_renderer.make_new_doc() @@ -563,18 +563,18 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ return order_by; }, assigned_to_me: function () { - this.filter_list.add_filter(this.doctype, '_assign', 'like', '%' + user + '%'); + this.filter_list.add_filter(this.doctype, '_assign', 'like', '%' + frappe.session.user + '%'); this.run(); }, liked_by_me: function () { - this.filter_list.add_filter(this.doctype, '_liked_by', 'like', '%' + user + '%'); + this.filter_list.add_filter(this.doctype, '_liked_by', 'like', '%' + frappe.session.user + '%'); this.run(); }, remove_liked_by_me: function () { this.filter_list.get_filter('_liked_by').remove(); }, is_star_filtered: function () { - return this.filter_list.filter_exists(this.doctype, '_liked_by', 'like', '%' + user + '%'); + return this.filter_list.filter_exists(this.doctype, '_liked_by', 'like', '%' + frappe.session.user + '%'); }, init_menu: function () { var me = this; @@ -606,7 +606,7 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ }); }, true); } - if (roles.includes('System Manager')) { + if (frappe.user_roles.includes('System Manager')) { this.page.add_menu_item(__('Role Permissions Manager'), function () { frappe.set_route('permission-manager', { doctype: me.doctype @@ -627,7 +627,7 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ frappe.add_to_desktop(me.doctype, me.doctype); }, true); - if (roles.includes('System Manager') && frappe.boot.developer_mode === 1) { + if (frappe.user_roles.includes('System Manager') && frappe.boot.developer_mode === 1) { // edit doctype this.page.add_menu_item(__('Edit DocType'), function () { frappe.set_route('Form', 'DocType', me.doctype); @@ -683,7 +683,7 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ return !is_submittable || doc.docstatus === 1 || (allow_print_for_cancelled && doc.docstatus == 2) || (allow_print_for_draft && doc.docstatus == 0) || - roles.includes('Administrator') + frappe.user_roles.includes('Administrator') }).map(function (doc) { return doc.name }); @@ -708,11 +708,11 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ }); dialog.set_primary_action(__('Print'), function () { - args = dialog.get_values(); + var args = dialog.get_values(); if (!args) return; var default_print_format = locals.DocType[me.doctype].default_print_format; - with_letterhead = args.with_letterhead ? 1 : 0; - print_format = args.print_sel ? args.print_sel : default_print_format; + var with_letterhead = args.with_letterhead ? 1 : 0; + var print_format = args.print_sel ? args.print_sel : default_print_format; var json_string = JSON.stringify(valid_docs); var w = window.open('/api/method/frappe.utils.print_format.download_multi_pdf?' @@ -725,7 +725,7 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ } }); - print_formats = frappe.meta.get_print_formats(me.doctype); + var print_formats = frappe.meta.get_print_formats(me.doctype); dialog.fields_dict.print_sel.$input.empty().add_options(print_formats); dialog.show(); diff --git a/frappe/public/js/frappe/misc/common.js b/frappe/public/js/frappe/misc/common.js index 808ae094de..eab3f8e6b2 100644 --- a/frappe/public/js/frappe/misc/common.js +++ b/frappe/public/js/frappe/misc/common.js @@ -30,7 +30,7 @@ frappe.avatar = function(user, css_class, title) { return repl('\ ', { + title="%(title)s">', { image: image, title: title, abbr: user_info.abbr, @@ -93,7 +93,7 @@ frappe.get_gravatar = function(email_id) { function repl(s, dict) { if(s==null)return ''; - for(key in dict) { + for(var key in dict) { s = s.split("%("+key+")s").join(dict[key]); } return s; @@ -162,8 +162,8 @@ function getCookies() { c.match(/(?:^|\s+)([!#$%&'*+\-.0-9A-Z^`a-z|~]+)=([!#$%&'*+\-.0-9A-Z^`a-z|~]*|"(?:[\x20-\x7E\x80\xFF]|\\[\x00-\x7F])*")(?=\s*[,;]|$)/g).map(function($0, $1) { var name = $0, value = $1.charAt(0) === '"' - ? $1.substr(1, -1).replace(/\\(.)/g, "$1") - : $1; + ? $1.substr(1, -1).replace(/\\(.)/g, "$1") + : $1; cookies[name] = value; }); } diff --git a/frappe/public/js/frappe/misc/datetime.js b/frappe/public/js/frappe/misc/datetime.js index 53a9c022bd..79f72a0ef4 100644 --- a/frappe/public/js/frappe/misc/datetime.js +++ b/frappe/public/js/frappe/misc/datetime.js @@ -10,8 +10,8 @@ frappe.provide("frappe.datetime"); $.extend(frappe.datetime, { convert_to_user_tz: function(date, format) { // format defaults to true - if(sys_defaults.time_zone) { - var date_obj = moment.tz(date, sys_defaults.time_zone).local(); + if(frappe.sys_defaults.time_zone) { + var date_obj = moment.tz(date, frappe.sys_defaults.time_zone).local(); } else { var date_obj = moment(date); } @@ -22,8 +22,8 @@ $.extend(frappe.datetime, { convert_to_system_tz: function(date, format) { // format defaults to true - if(sys_defaults.time_zone) { - var date_obj = moment(date).tz(sys_defaults.time_zone); + if(frappe.sys_defaults.time_zone) { + var date_obj = moment(date).tz(frappe.sys_defaults.time_zone); } else { var date_obj = moment(date); } @@ -32,8 +32,8 @@ $.extend(frappe.datetime, { }, is_timezone_same: function() { - if(sys_defaults.time_zone) { - return moment().tz(sys_defaults.time_zone).utcOffset() === moment().utcOffset(); + if(frappe.sys_defaults.time_zone) { + return moment().tz(frappe.sys_defaults.time_zone).utcOffset() === moment().utcOffset(); } else { return true; } @@ -48,7 +48,7 @@ $.extend(frappe.datetime, { }, obj_to_user: function(d) { - return moment(d).format(dateutil.get_user_fmt().toUpperCase()); + return moment(d).format(frappe.datetime.get_user_fmt().toUpperCase()); }, get_diff: function(d1, d2) { @@ -88,12 +88,12 @@ $.extend(frappe.datetime, { }, get_user_fmt: function() { - return sys_defaults.date_format || "yyyy-mm-dd"; + return frappe.sys_defaults.date_format || "yyyy-mm-dd"; }, str_to_user: function(val, no_time_str) { if(!val) return ""; - var user_fmt = dateutil.get_user_fmt().toUpperCase(); + var user_fmt = frappe.datetime.get_user_fmt().toUpperCase(); if(typeof val !== "string" || val.indexOf(" ")===-1) { return moment(val).format(user_fmt); } else { @@ -110,7 +110,7 @@ $.extend(frappe.datetime, { }, user_to_str: function(val, no_time_str) { - var user_fmt = dateutil.get_user_fmt().toUpperCase(); + var user_fmt = frappe.datetime.get_user_fmt().toUpperCase(); var system_fmt = "YYYY-MM-DD"; if(val.indexOf(" ")!==-1) { @@ -124,7 +124,7 @@ $.extend(frappe.datetime, { }, user_to_obj: function(d) { - return dateutil.str_to_obj(dateutil.user_to_str(d)); + return frappe.datetime.str_to_obj(frappe.datetime.user_to_str(d)); }, global_date_format: function(d) { @@ -156,5 +156,5 @@ $.extend(frappe.datetime, { }); // globals (deprecate) -var date = dateutil = frappe.datetime; -var get_today = frappe.datetime.get_today; +// var date = dateutil = frappe.datetime; +// var get_today = frappe.datetime.get_today; diff --git a/frappe/public/js/frappe/misc/number_format.js b/frappe/public/js/frappe/misc/number_format.js index fa77b3bbfc..c9b465da80 100644 --- a/frappe/public/js/frappe/misc/number_format.js +++ b/frappe/public/js/frappe/misc/number_format.js @@ -1,55 +1,55 @@ // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // MIT License. See license.txt -if(!window.frappe) window.frappe = {}; +if (!window.frappe) window.frappe = {}; function flt(v, decimals, number_format) { - if(v==null || v=='')return 0; + if (v == null || v == '') return 0; - if(typeof v!=="number") { + if (typeof v !== "number") { v = v + ""; // strip currency symbol if exists - if(v.indexOf(" ")!=-1) { + if (v.indexOf(" ") != -1) { // using slice(1).join(" ") because space could also be a group separator - parts = v.split(" "); + var parts = v.split(" "); v = isNaN(parseFloat(parts[0])) ? parts.slice(parts.length - 1).join(" ") : v; } v = strip_number_groups(v, number_format); - v=parseFloat(v); - if(isNaN(v)) - v=0; + v = parseFloat(v); + if (isNaN(v)) + v = 0; } - if(decimals!=null) + if (decimals != null) return _round(v, decimals); return v; } function cint(v, def) { - if(v===true) + if (v === true) return 1; - if(v===false) + if (v === false) return 0; - v=v+''; - if(v!=="0")v=lstrip(v, ['0']); - v=parseInt(v); - if(isNaN(v))v=def===undefined?0:def; + v = v + ''; + if (v !== "0") v = lstrip(v, ['0']); + v = parseInt(v); + if (isNaN(v)) v = def === undefined ? 0 : def; return v; } function strip_number_groups(v, number_format) { - if(!number_format) number_format = get_number_format(); + if (!number_format) number_format = get_number_format(); var info = get_number_format_info(number_format); // strip groups (,) - var group_regex = new RegExp(info.group_sep==="." ? "\\." : info.group_sep, "g"); + var group_regex = new RegExp(info.group_sep === "." ? "\\." : info.group_sep, "g"); v = v.replace(group_regex, ""); // replace decimal separator with (.) - if (info.decimal_str!=="." && info.decimal_str!=="") { + if (info.decimal_str !== "." && info.decimal_str !== "") { var decimal_regex = new RegExp(info.decimal_str, "g"); v = v.replace(decimal_regex, "."); } @@ -59,32 +59,32 @@ function strip_number_groups(v, number_format) { frappe.number_format_info = { - "#,###.##": {decimal_str:".", group_sep:","}, - "#.###,##": {decimal_str:",", group_sep:"."}, - "# ###.##": {decimal_str:".", group_sep:" "}, - "# ###,##": {decimal_str:",", group_sep:" "}, - "#'###.##": {decimal_str:".", group_sep:"'"}, - "#, ###.##": {decimal_str:".", group_sep:", "}, - "#,##,###.##": {decimal_str:".", group_sep:","}, - "#,###.###": {decimal_str:".", group_sep:","}, - "#.###": {decimal_str:"", group_sep:"."}, - "#,###": {decimal_str:"", group_sep:","}, + "#,###.##": { decimal_str: ".", group_sep: "," }, + "#.###,##": { decimal_str: ",", group_sep: "." }, + "# ###.##": { decimal_str: ".", group_sep: " " }, + "# ###,##": { decimal_str: ",", group_sep: " " }, + "#'###.##": { decimal_str: ".", group_sep: "'" }, + "#, ###.##": { decimal_str: ".", group_sep: ", " }, + "#,##,###.##": { decimal_str: ".", group_sep: "," }, + "#,###.###": { decimal_str: ".", group_sep: "," }, + "#.###": { decimal_str: "", group_sep: "." }, + "#,###": { decimal_str: "", group_sep: "," }, } -window.format_number = function(v, format, decimals){ +window.format_number = function (v, format, decimals) { if (!format) { format = get_number_format(); - if(decimals == null) decimals = cint(frappe.defaults.get_default("float_precision")) || 3; + if (decimals == null) decimals = cint(frappe.defaults.get_default("float_precision")) || 3; } - info = get_number_format_info(format); + var info = get_number_format_info(format); // Fix the decimal first, toFixed will auto fill trailing zero. if (decimals == null) decimals = info.precision; v = flt(v, decimals, format); - if(v<0) var is_negative = true; + if (v < 0) var is_negative = true; v = Math.abs(v); v = v.toFixed(decimals); @@ -98,23 +98,23 @@ window.format_number = function(v, format, decimals){ var integer = part[0]; var str = ''; var offset = integer.length % group_position; - for (var i=integer.length; i>=0; i--) { + for (var i = integer.length; i >= 0; i--) { var l = replace_all(str, info.group_sep, "").length; - if(format=="#,##,###.##" && str.indexOf(",")!=-1) { // INR + if (format == "#,##,###.##" && str.indexOf(",") != -1) { // INR group_position = 2; l += 1; } str += integer.charAt(i); - if (l && !((l+1) % group_position) && i!=0 ) { + if (l && !((l + 1) % group_position) && i != 0) { str += info.group_sep; } } part[0] = str.split("").reverse().join(""); } - if(part[0]+""=="") { - part[0]="0"; + if (part[0] + "" == "") { + part[0] = "0"; } // join decimal @@ -131,18 +131,18 @@ function format_currency(v, currency, decimals) { decimals = frappe.boot.sysdefaults.currency_precision || null; } - if(symbol) + if (symbol) return symbol + " " + format_number(v, format, decimals); else return format_number(v, format, decimals); } function get_currency_symbol(currency) { - if(frappe.boot) { - if(frappe.boot.sysdefaults.hide_currency_symbol=="Yes") + if (frappe.boot) { + if (frappe.boot.sysdefaults.hide_currency_symbol == "Yes") return null; - if(!currency) + if (!currency) currency = frappe.boot.sysdefaults.currency; return frappe.model.get_value(":Currency", currency, "symbol") || currency; @@ -159,8 +159,8 @@ function get_number_format(currency) { function get_number_format_info(format) { var info = frappe.number_format_info[format]; - if(!info) { - info = {decimal_str:".", group_sep:","}; + if (!info) { + info = { decimal_str: ".", group_sep: "," }; } // get the precision from the number format @@ -171,13 +171,13 @@ function get_number_format_info(format) { function _round(num, precision) { var is_negative = num < 0 ? true : false; - var d = cint(precision); - var m = Math.pow(10, d); - var n = +(d ? Math.abs(num) * m : Math.abs(num)).toFixed(8); // Avoid rounding errors - var i = Math.floor(n), f = n - i; - var r = ((!precision && f == 0.5) ? ((i % 2 == 0) ? i : i + 1) : Math.round(n)); - r = d ? r / m : r; - return is_negative ? -r : r; + var d = cint(precision); + var m = Math.pow(10, d); + var n = +(d ? Math.abs(num) * m : Math.abs(num)).toFixed(8); // Avoid rounding errors + var i = Math.floor(n), f = n - i; + var r = ((!precision && f == 0.5) ? ((i % 2 == 0) ? i : i + 1) : Math.round(n)); + r = d ? r / m : r; + return is_negative ? -r : r; } @@ -187,20 +187,20 @@ function roundNumber(num, precision) { } function precision(fieldname, doc) { - if(cur_frm){ - if(!doc) doc = cur_frm.doc; + if (cur_frm) { + if (!doc) doc = cur_frm.doc; var df = frappe.meta.get_docfield(doc.doctype, fieldname, doc.parent || doc.name); - if(!df) console.log(fieldname + ": could not find docfield in method precision()"); + if (!df) console.log(fieldname + ": could not find docfield in method precision()"); return frappe.meta.get_field_precision(df, doc); - }else{ + } else { return frappe.boot.sysdefaults.float_precision } } function in_list(list, item) { - if(!list) return false; - for(var i=0, j=list.length; i (smallest_currency_fraction_value / 2)) { + if (remainder_val > (smallest_currency_fraction_value / 2)) { value += (smallest_currency_fraction_value - remainder_val); } else { value -= remainder_val; @@ -231,4 +231,4 @@ function round_based_on_smallest_currency_fraction(value, currency, precision) { value = Math.round(value); } return value; -}; +} diff --git a/frappe/public/js/frappe/misc/pretty_date.js b/frappe/public/js/frappe/misc/pretty_date.js index 7ec4c42ec1..427752b0bc 100644 --- a/frappe/public/js/frappe/misc/pretty_date.js +++ b/frappe/public/js/frappe/misc/pretty_date.js @@ -5,8 +5,8 @@ function prettyDate(time, mini){ time = new Date(); } if(moment) { - if(window.sys_defaults && sys_defaults.time_zone) { - var ret = moment.tz(time, sys_defaults.time_zone).locale(frappe.boot.lang).fromNow(mini); + if(frappe.sys_defaults && frappe.sys_defaults.time_zone) { + var ret = moment.tz(time, frappe.sys_defaults.time_zone).locale(frappe.boot.lang).fromNow(mini); } else { var ret = moment(time).locale(frappe.boot.lang).fromNow(mini); } @@ -41,7 +41,7 @@ function prettyDate(time, mini){ if ( isNaN(day_diff) || day_diff < 0 ) return ''; - return when = day_diff == 0 && ( + var when = day_diff == 0 && ( diff < 60 && __("just now") || diff < 120 && __("1 minute ago") || diff < 3600 && __("{0} minutes ago", [Math.floor( diff / 60 )]) || @@ -52,6 +52,8 @@ function prettyDate(time, mini){ day_diff < 31 && __("{0} weeks ago", [Math.ceil( day_diff / 7 )]) || day_diff < 365 && __("{0} months ago", [Math.ceil( day_diff / 30)]) || __("> {0} year(s) ago", [Math.floor( day_diff / 365 )]); + + return when; } } diff --git a/frappe/public/js/frappe/misc/tools.js b/frappe/public/js/frappe/misc/tools.js index 1414a5eee6..5e4ffc32e3 100644 --- a/frappe/public/js/frappe/misc/tools.js +++ b/frappe/public/js/frappe/misc/tools.js @@ -5,7 +5,7 @@ frappe.provide("frappe.tools"); frappe.tools.downloadify = function(data, roles, title) { if(roles && roles.length && !has_common(roles, roles)) { - msgprint(__("Export not allowed. You need {0} role to export.", [frappe.utils.comma_or(roles)])); + frappe.msgprint(__("Export not allowed. You need {0} role to export.", [frappe.utils.comma_or(roles)])); return; } diff --git a/frappe/public/js/frappe/misc/user.js b/frappe/public/js/frappe/misc/user.js index cc42a2f6ba..0928d4092e 100644 --- a/frappe/public/js/frappe/misc/user.js +++ b/frappe/public/js/frappe/misc/user.js @@ -5,7 +5,7 @@ frappe.user_info = function(uid) { if(!uid) - uid = user; + uid = frappe.session.user; if(uid.toLowerCase()==="bot") { return { @@ -57,7 +57,7 @@ frappe.provide('frappe.user'); $.extend(frappe.user, { name: 'Guest', full_name: function(uid) { - return uid===user ? + return uid === frappe.session.user ? __("You") : frappe.user_info(uid).fullname; }, @@ -77,7 +77,7 @@ $.extend(frappe.user, { }, get_desktop_items: function() { // hide based on permission - modules_list = $.map(frappe.boot.desktop_icons, function(icon) { + var modules_list = $.map(frappe.boot.desktop_icons, function(icon) { var m = icon.module_name; var type = frappe.modules[m] && frappe.modules[m].type; diff --git a/frappe/public/js/frappe/misc/utils.js b/frappe/public/js/frappe/misc/utils.js index 3cf3bca475..7eb4923b87 100644 --- a/frappe/public/js/frappe/misc/utils.js +++ b/frappe/public/js/frappe/misc/utils.js @@ -5,13 +5,13 @@ frappe.provide('frappe.utils'); frappe.utils = { get_random: function(len) { - var text = ""; - var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + var text = ""; + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - for( var i=0; i < len; i++ ) - text += possible.charAt(Math.floor(Math.random() * possible.length)); + for( var i=0; i < len; i++ ) + text += possible.charAt(Math.floor(Math.random() * possible.length)); - return text; + return text; }, get_file_link: function(filename) { filename = cstr(filename); @@ -122,7 +122,7 @@ frappe.utils = { return [dict[filters]] } $.each(dict, function(i, d) { - for(key in filters) { + for(var key in filters) { if($.isArray(filters[key])) { if(filters[key][0]=="in") { if(filters[key][1].indexOf(d[key])==-1) @@ -242,7 +242,6 @@ frappe.utils = { break; default: return false; - break; } // test regExp if not null @@ -288,7 +287,7 @@ frappe.utils = { }; if(!compare_type) - compare_type = typeof list[0][key]==="string" ? "string" : "number"; + compare_type = typeof list[0][key]==="string" ? "string" : "number"; list.sort(sort_fn[compare_type]); @@ -349,20 +348,20 @@ frappe.utils = { if (!arr1 || !arr2) { return false; } - if (arr1.length != arr2.length) { + if (arr1.length != arr2.length) { return false; } - for (var i = 0; i < arr1.length; i++) { - if ($.isArray(arr1[i])) { - if (!frappe.utils.arrays_equal(arr1[i], arr2[i])) { + for (var i = 0; i < arr1.length; i++) { + if ($.isArray(arr1[i])) { + if (!frappe.utils.arrays_equal(arr1[i], arr2[i])) { return false; } - } - else if (arr1[i] !== arr2[i]) { + } + else if (arr1[i] !== arr2[i]) { return false; } - } - return true; + } + return true; }, intersection: function(a, b) { @@ -411,13 +410,13 @@ frappe.utils = { var tempH = tempImg.height; if (tempW > tempH) { if (tempW > max_width) { - tempH *= max_width / tempW; - tempW = max_width; + tempH *= max_width / tempW; + tempW = max_width; } } else { if (tempH > max_height) { - tempW *= max_height / tempH; - tempH = max_height; + tempW *= max_height / tempH; + tempH = max_height; } } @@ -431,88 +430,88 @@ frappe.utils = { } }, - csv_to_array: function (strData, strDelimiter) { - // Check to see if the delimiter is defined. If not, - // then default to comma. - strDelimiter = (strDelimiter || ","); + csv_to_array: function (strData, strDelimiter) { + // Check to see if the delimiter is defined. If not, + // then default to comma. + strDelimiter = (strDelimiter || ","); - // Create a regular expression to parse the CSV values. - var objPattern = new RegExp( - ( - // Delimiters. - "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" + + // Create a regular expression to parse the CSV values. + var objPattern = new RegExp( + ( + // Delimiters. + "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" + - // Quoted fields. - "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" + + // Quoted fields. + "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" + - // Standard fields. - "([^\"\\" + strDelimiter + "\\r\\n]*))" - ), - "gi" - ); + // Standard fields. + "([^\"\\" + strDelimiter + "\\r\\n]*))" + ), + "gi" + ); - // Create an array to hold our data. Give the array - // a default empty first row. - var arrData = [[]]; + // Create an array to hold our data. Give the array + // a default empty first row. + var arrData = [[]]; - // Create an array to hold our individual pattern - // matching groups. - var arrMatches = null; + // Create an array to hold our individual pattern + // matching groups. + var arrMatches = null; - // Keep looping over the regular expression matches - // until we can no longer find a match. - while (arrMatches = objPattern.exec( strData )){ + // Keep looping over the regular expression matches + // until we can no longer find a match. + while (arrMatches = objPattern.exec( strData )){ - // Get the delimiter that was found. - var strMatchedDelimiter = arrMatches[ 1 ]; + // Get the delimiter that was found. + var strMatchedDelimiter = arrMatches[ 1 ]; - // Check to see if the given delimiter has a length - // (is not the start of string) and if it matches - // field delimiter. If id does not, then we know - // that this delimiter is a row delimiter. - if ( - strMatchedDelimiter.length && - strMatchedDelimiter !== strDelimiter - ){ + // Check to see if the given delimiter has a length + // (is not the start of string) and if it matches + // field delimiter. If id does not, then we know + // that this delimiter is a row delimiter. + if ( + strMatchedDelimiter.length && + strMatchedDelimiter !== strDelimiter + ){ - // Since we have reached a new row of data, - // add an empty row to our data array. - arrData.push( [] ); + // Since we have reached a new row of data, + // add an empty row to our data array. + arrData.push( [] ); - } + } - var strMatchedValue; + var strMatchedValue; - // Now that we have our delimiter out of the way, - // let's check to see which kind of value we - // captured (quoted or unquoted). - if (arrMatches[ 2 ]){ + // Now that we have our delimiter out of the way, + // let's check to see which kind of value we + // captured (quoted or unquoted). + if (arrMatches[ 2 ]){ - // We found a quoted value. When we capture - // this value, unescape any double quotes. - strMatchedValue = arrMatches[ 2 ].replace( - new RegExp( "\"\"", "g" ), - "\"" - ); + // We found a quoted value. When we capture + // this value, unescape any double quotes. + strMatchedValue = arrMatches[ 2 ].replace( + new RegExp( "\"\"", "g" ), + "\"" + ); - } else { + } else { - // We found a non-quoted value. - strMatchedValue = arrMatches[ 3 ]; + // We found a non-quoted value. + strMatchedValue = arrMatches[ 3 ]; - } + } - // Now that we have our value string, let's add - // it to the data array. - arrData[ arrData.length - 1 ].push( strMatchedValue ); - } + // Now that we have our value string, let's add + // it to the data array. + arrData[ arrData.length - 1 ].push( strMatchedValue ); + } - // Return the parsed data. - return( arrData ); - }, + // Return the parsed data. + return( arrData ); + }, warn_page_name_change: function(frm) { frappe.msgprint("Note: Changing the Page Name will break previous URL to this page."); @@ -589,40 +588,40 @@ frappe.utils = { // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes if (!String.prototype.includes) { String.prototype.includes = function(search, start) { - 'use strict'; - if (typeof start !== 'number') { - start = 0; - } - if (start + search.length > this.length) { - return false; - } else { - return this.indexOf(search, start) !== -1; - } + 'use strict'; + if (typeof start !== 'number') { + start = 0; + } + if (start + search.length > this.length) { + return false; + } else { + return this.indexOf(search, start) !== -1; + } }; } // Array.prototype.includes polyfill // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/includes if (!Array.prototype.includes) { Object.defineProperty(Array.prototype, 'includes', { - value: function(searchElement, fromIndex) { - if (this == null) { - throw new TypeError('"this" is null or not defined'); - } - var o = Object(this); - var len = o.length >>> 0; - if (len === 0) { - return false; - } - var n = fromIndex | 0; - var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - while (k < len) { - if (o[k] === searchElement) { - return true; - } - k++; - } - return false; - } + value: function(searchElement, fromIndex) { + if (this == null) { + throw new TypeError('"this" is null or not defined'); + } + var o = Object(this); + var len = o.length >>> 0; + if (len === 0) { + return false; + } + var n = fromIndex | 0; + var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); + while (k < len) { + if (o[k] === searchElement) { + return true; + } + k++; + } + return false; + } }); } // Array de duplicate diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js index be1ec9bb4f..efc14fa77f 100644 --- a/frappe/public/js/frappe/model/create_new.js +++ b/frappe/public/js/frappe/model/create_new.js @@ -15,7 +15,7 @@ $.extend(frappe.model, { name: frappe.model.get_new_name(doctype), __islocal: 1, __unsaved: 1, - owner: user + owner: frappe.session.user }; frappe.model.set_default_values(doc, parent_doc); @@ -140,7 +140,7 @@ $.extend(frappe.model, { if(!df.ignore_user_permissions) { // 2 - look in user defaults - user_defaults = frappe.defaults.get_user_defaults(df.options); + var user_defaults = frappe.defaults.get_user_defaults(df.options); if (user_defaults && user_defaults.length===1) { // Use User Permission value when only when it has a single value user_default = user_defaults[0]; @@ -171,13 +171,13 @@ $.extend(frappe.model, { return frappe.session.user; } else if (df["default"] == "user_fullname") { - return user_fullname; + return frappe.session.user_fullname; } else if (df["default"] == "Today") { - return dateutil.get_today(); + return frappe.datetime.get_today(); } else if ((df["default"] || "").toLowerCase() === "now") { - return dateutil.now_datetime(); + return frappe.datetime.now_datetime(); } else if (df["default"][0]===":") { var boot_doc = frappe.model.get_default_from_boot_docs(df, doc, parent_doc); @@ -198,7 +198,7 @@ $.extend(frappe.model, { } } else if (df.fieldtype=="Time") { - return dateutil.now_time(); + return frappe.datetime.now_time(); } }, @@ -267,6 +267,8 @@ $.extend(frappe.model, { } } + var user = frappe.session.user; + newdoc.__islocal = 1; newdoc.docstatus = 0; newdoc.owner = user; @@ -309,7 +311,7 @@ $.extend(frappe.model, { frappe.create_routes = {}; frappe.new_doc = function (doctype, opts) { - if(opts && $.isPlainObject(opts)) { frappe.route_options = opts; }; + if(opts && $.isPlainObject(opts)) { frappe.route_options = opts; } frappe.model.with_doctype(doctype, function() { if(frappe.create_routes[doctype]) { frappe.set_route(frappe.create_routes[doctype]); diff --git a/frappe/public/js/frappe/model/meta.js b/frappe/public/js/frappe/model/meta.js index 542588324f..04b0594685 100644 --- a/frappe/public/js/frappe/model/meta.js +++ b/frappe/public/js/frappe/model/meta.js @@ -173,7 +173,7 @@ $.extend(frappe.meta, { get_parentfield: function(parent_dt, child_dt) { var df = (frappe.get_doc("DocType", parent_dt).fields || []).filter(function(d) - { return d.fieldtype==="Table" && options===child_dt }) + { return d.fieldtype==="Table" && d.options===child_dt }) if(!df.length) throw "parentfield not found for " + parent_dt + ", " + child_dt; return df[0].fieldname; diff --git a/frappe/public/js/frappe/model/model.js b/frappe/public/js/frappe/model/model.js index 10a882db67..3ed470a64d 100644 --- a/frappe/public/js/frappe/model/model.js +++ b/frappe/public/js/frappe/model/model.js @@ -5,7 +5,7 @@ frappe.provide('frappe.model'); $.extend(frappe.model, { no_value_type: ['Section Break', 'Column Break', 'HTML', 'Table', - 'Button', 'Image', 'Fold', 'Heading'], + 'Button', 'Image', 'Fold', 'Heading'], layout_fields: ['Section Break', 'Column Break', 'Fold'], @@ -77,7 +77,7 @@ $.extend(frappe.model, { if(d.fieldname==fieldname) return d; }); if(!docfield.length) { - msgprint(__("Unknown Column: {0}", [fieldname])); + frappe.msgprint(__("Unknown Column: {0}", [fieldname])); } return docfield[0]; }, @@ -103,7 +103,7 @@ $.extend(frappe.model, { freeze: true, callback: function(r) { if(r.exc) { - msgprint(__("Unable to load: {0}", [__(doctype)])); + frappe.msgprint(__("Unable to load: {0}", [__(doctype)])); throw "No doctype"; } if(r.message=="use_cache") { @@ -235,7 +235,7 @@ $.extend(frappe.model, { can_import: function(doctype, frm) { // system manager can always import - if(roles.indexOf("System Manager")!==-1) return true; + if(frappe.user_roles.includes("System Manager")) return true; if(frm) return frm.perm[0].import===1; return frappe.boot.user.can_import.indexOf(doctype)!==-1; @@ -243,7 +243,7 @@ $.extend(frappe.model, { can_export: function(doctype, frm) { // system manager can always export - if(roles.indexOf("System Manager")!==-1) return true; + if(frappe.user_roles.includes("System Manager")) return true; if(frm) return frm.perm[0].export===1; return frappe.boot.user.can_export.indexOf(doctype)!==-1; @@ -268,7 +268,7 @@ $.extend(frappe.model, { can_set_user_permissions: function(doctype, frm) { // system manager can always set user permissions - if(roles.indexOf("System Manager")!==-1) return true; + if(frappe.user_roles.includes("System Manager")) return true; if(frm) return frm.perm[0].set_user_permissions===1; return frappe.boot.user.can_set_user_permissions.indexOf(doctype)!==-1; @@ -359,7 +359,7 @@ $.extend(frappe.model, { */ /* example: frappe.model.on("Customer", "age", function(fieldname, value, doc) { if(doc.age < 16) { - msgprint("Warning, Customer must atleast be 16 years old."); + frappe.msgprint("Warning, Customer must atleast be 16 years old."); raise "CustomerAgeError"; } }) */ @@ -385,7 +385,7 @@ $.extend(frappe.model, { // doctype-level run(frappe.model.events[doc.doctype]['*']); - }; + } }, get_doc: function(doctype, name) { @@ -541,7 +541,7 @@ $.extend(frappe.model, { get_all_docs: function(doc) { var all = [doc]; - for(key in doc) { + for(var key in doc) { if($.isArray(doc[key])) { var children = doc[key]; for (var i=0, l=children.length; i < l; i++) { diff --git a/frappe/public/js/frappe/model/perm.js b/frappe/public/js/frappe/model/perm.js index f660440c05..0bf62525e4 100644 --- a/frappe/public/js/frappe/model/perm.js +++ b/frappe/public/js/frappe/model/perm.js @@ -45,7 +45,7 @@ $.extend(frappe.perm, { return perm; } - if (user==="Administrator" || roles.indexOf("Administrator")!==-1) { + if (frappe.session.user === "Administrator" || frappe.user_roles.includes("Administrator")) { perm[0].read = 1; } @@ -62,7 +62,7 @@ $.extend(frappe.perm, { // if owner if(!$.isEmptyObject(perm[0].if_owner)) { - if(doc.owner===user) { + if(doc.owner === frappe.session.user) { $.extend(perm[0], perm[0].if_owner); } else { // not owner, remove permissions @@ -78,7 +78,7 @@ $.extend(frappe.perm, { if(docinfo && docinfo.shared) { for(var i=0; i icon - for(key in perm) { + for(var key in perm) { if(key!='parent' && key!='permlevel') { if(perm[key]) { perm[key] = ''; diff --git a/frappe/public/js/frappe/router.js b/frappe/public/js/frappe/router.js index 3f6ddba9b8..7a58076a60 100644 --- a/frappe/public/js/frappe/router.js +++ b/frappe/public/js/frappe/router.js @@ -120,7 +120,7 @@ frappe.set_route = function() { if(params.length===1 && $.isArray(params[0])) { params = params[0]; } - route = $.map(params, function(a) { + var route = $.map(params, function(a) { if($.isPlainObject(a)) { frappe.route_options = a; return null; diff --git a/frappe/public/js/frappe/socketio_client.js b/frappe/public/js/frappe/socketio_client.js index f3b028cca9..c8af253bed 100644 --- a/frappe/public/js/frappe/socketio_client.js +++ b/frappe/public/js/frappe/socketio_client.js @@ -18,7 +18,7 @@ frappe.socket = { //Enable secure option when using HTTPS if (window.location.protocol == "https:") { - frappe.socket.socket = io.connect(frappe.socket.get_host(), {secure: true}); + frappe.socket.socket = io.connect(frappe.socket.get_host(), {secure: true}); } else if (window.location.protocol == "http:") { frappe.socket.socket = io.connect(frappe.socket.get_host()); diff --git a/frappe/public/js/frappe/toolbar.js b/frappe/public/js/frappe/toolbar.js index 3e712c40c9..55f8dc2f2e 100755 --- a/frappe/public/js/frappe/toolbar.js +++ b/frappe/public/js/frappe/toolbar.js @@ -56,8 +56,8 @@ frappe.get_form_sidebar_extension = function() { var template = ''; + {{ usage.total }}MB ({{ usage.total_used_percent }}%) used\ + '; usage.sidebar_usage_html = frappe.render(template, { 'usage': usage }, "form_sidebar_usage"); } else { diff --git a/frappe/public/js/frappe/translate.js b/frappe/public/js/frappe/translate.js index 7a54bde034..bc9acd497f 100644 --- a/frappe/public/js/frappe/translate.js +++ b/frappe/public/js/frappe/translate.js @@ -8,7 +8,7 @@ frappe._ = function(txt, replace) { return txt; if(typeof(txt) != "string") return txt; - ret = frappe._messages[txt.replace(/\n/g, "")] || txt; + var ret = frappe._messages[txt.replace(/\n/g, "")] || txt; if(replace && typeof(replace) === "object") { ret = $.format(ret, replace); } diff --git a/frappe/public/js/frappe/ui/base_list.js b/frappe/public/js/frappe/ui/base_list.js index d28e040ecf..720144350b 100644 --- a/frappe/public/js/frappe/ui/base_list.js +++ b/frappe/public/js/frappe/ui/base_list.js @@ -173,7 +173,7 @@ frappe.ui.BaseList = Class.extend({ // default filter for submittable doctype if (frappe.model.is_submittable(this.doctype)) { this.filter_list.add_filter(this.doctype, "docstatus", "!=", 2); - }; + } }, clear: function () { diff --git a/frappe/public/js/frappe/ui/charts.js b/frappe/public/js/frappe/ui/charts.js index 776e35fdb3..64f6414b9f 100644 --- a/frappe/public/js/frappe/ui/charts.js +++ b/frappe/public/js/frappe/ui/charts.js @@ -28,11 +28,11 @@ frappe.ui.Chart = Class.extend({ render_chart: function() { var chart_dict = { bindto: '#' + this.opts.bind_to, - data: {}, + data: {}, axis: { - x: { - type: this.opts.x_type || 'category' // this needed to load string x value - }, + x: { + type: this.opts.x_type || 'category' // this needed to load string x value + }, y: { padding: { bottom: 10 } } @@ -62,11 +62,11 @@ frappe.ui.Chart = Class.extend({ chart_dict.axis.x.tick.culling = {max: 15}; chart_dict.axis.x.tick.format = frappe.boot.sysdefaults.date_format .replace('yyyy', '%Y').replace('mm', '%m').replace('dd', '%d'); - }; + } // set color if(!chart_dict.data.colors && chart_dict.data.columns) { - colors = ['#4E50A6', '#7679FB', '#A3A5FC', '#925191', '#5D3EA4', '#8D5FFA', + var colors = ['#4E50A6', '#7679FB', '#A3A5FC', '#925191', '#5D3EA4', '#8D5FFA', '#5E3AA8', '#7B933D', '#4F8EA8']; chart_dict.data.colors = {}; chart_dict.data.columns.forEach(function(d, i) { diff --git a/frappe/public/js/frappe/ui/field_group.js b/frappe/public/js/frappe/ui/field_group.js index e40b6d87f5..896dca5901 100644 --- a/frappe/public/js/frappe/ui/field_group.js +++ b/frappe/public/js/frappe/ui/field_group.js @@ -74,7 +74,7 @@ frappe.ui.FieldGroup = frappe.ui.form.Layout.extend({ } } if(errors.length && !ignore_errors) { - msgprint({ + frappe.msgprint({ title: __('Missing Values Required'), message: __('Following fields have missing values:') + '

  • ' + errors.join('
  • ') + '
', @@ -106,7 +106,7 @@ frappe.ui.FieldGroup = frappe.ui.form.Layout.extend({ } }, clear: function() { - for(key in this.fields_dict) { + for(var key in this.fields_dict) { var f = this.fields_dict[key]; if(f && f.set_input) { f.set_input(f.df['default'] || ''); diff --git a/frappe/public/js/frappe/ui/filters/filters.js b/frappe/public/js/frappe/ui/filters/filters.js index 263fdf89b6..03b62b6428 100644 --- a/frappe/public/js/frappe/ui/filters/filters.js +++ b/frappe/public/js/frappe/ui/filters/filters.js @@ -149,8 +149,8 @@ frappe.ui.FilterList = Class.extend({ } if(options.length>0) { - for (i in stat) { - for (o in options) { + for (var i in stat) { + for (var o in options) { if (stat[i][0] == options[o].value) { if (field.name=="docstatus") { labels[i] = options[o].label @@ -460,8 +460,7 @@ frappe.ui.Filter = Class.extend({ ? __("values separated by commas") : __("use % as wildcard"))+'
'); } else { - me.set_field(me.field.df.parent, me.field.df.fieldname, null, - condition); + me.set_field(me.field.df.parent, me.field.df.fieldname, null, condition); } }); @@ -512,7 +511,7 @@ frappe.ui.Filter = Class.extend({ var original_docfield = me.fieldselect.fields_by_name[doctype][fieldname]; if(!original_docfield) { - msgprint(__("Field {0} is not selectable.", [fieldname])); + frappe.msgprint(__("Field {0} is not selectable.", [fieldname])); return; } @@ -784,7 +783,7 @@ frappe.ui.FieldSelect = Class.extend({ // old style if(doctype.indexOf(".")!==-1) { - parts = doctype.split("."); + var parts = doctype.split("."); doctype = parts[0]; fieldname = parts[1]; } diff --git a/frappe/public/js/frappe/ui/like.js b/frappe/public/js/frappe/ui/like.js index 0ebd429a2d..0dbdac72ad 100644 --- a/frappe/public/js/frappe/ui/like.js +++ b/frappe/public/js/frappe/ui/like.js @@ -3,7 +3,7 @@ frappe.ui.is_liked = function(doc) { var liked = frappe.ui.get_liked_by(doc); - return liked.indexOf(user)===-1 ? false : true; + return liked.indexOf(frappe.session.user)===-1 ? false : true; } frappe.ui.get_liked_by = function(doc) { @@ -47,10 +47,10 @@ frappe.ui.toggle_like = function($btn, doctype, name, callback) { var doc = locals[doctype] && locals[doctype][name]; if(doc) { var liked_by = JSON.parse(doc._liked_by || "[]"), - idx = liked_by.indexOf(user); + idx = liked_by.indexOf(frappe.session.user); if(add==="Yes") { if(idx===-1) - liked_by.push(user); + liked_by.push(frappe.session.user); } else { if(idx!==-1) { liked_by = liked_by.slice(0,idx).concat(liked_by.slice(idx+1)) @@ -98,7 +98,7 @@ frappe.ui.setup_like_popover = function($parent, selector) { placement: "right", content: function() { var liked_by = JSON.parse($wrapper.attr('data-liked-by') || "[]"); - + var user = frappe.session.user; // hack if ($wrapper.find(".not-liked").length) { if (liked_by.indexOf(user)!==-1) { diff --git a/frappe/public/js/frappe/ui/listing.js b/frappe/public/js/frappe/ui/listing.js index 437b16829f..39ec149ca6 100644 --- a/frappe/public/js/frappe/ui/listing.js +++ b/frappe/public/js/frappe/ui/listing.js @@ -80,7 +80,7 @@ frappe.ui.Listing = Class.extend({ return this.page.add_menu_item(label, click, icon) } else { this.wrapper.find('.list-toolbar-wrapper').removeClass("hide"); - $button = $('') + var $button = $('') .appendTo(this.wrapper.find('.list-toolbar')) .html((icon ? (" ") : "") + label) .click(click); @@ -166,7 +166,7 @@ frappe.ui.Listing = Class.extend({ }); if(frappe.model.is_submittable(this.doctype)) { this.filter_list.add_filter(this.doctype, "docstatus", "!=", 2); - }; + } }, clear: function() { @@ -246,7 +246,7 @@ frappe.ui.Listing = Class.extend({ save_list_settings_locally: function(args) { if(this.opts.save_list_settings && this.doctype && !this.docname) { // save list settings locally - list_settings = frappe.model.list_settings[this.doctype]; + var list_settings = frappe.model.list_settings[this.doctype]; if(!list_settings) { return @@ -409,7 +409,7 @@ frappe.ui.Listing = Class.extend({ }, set_filter: function(fieldname, label, no_run, no_duplicate, parent) { var filter = this.filter_list.get_filter(fieldname); - doctype = parent && this.doctype != parent? parent: this.doctype + var doctype = parent && this.doctype != parent? parent: this.doctype if(filter) { var v = cstr(filter.field.get_parsed_value()); diff --git a/frappe/public/js/frappe/ui/messages.js b/frappe/public/js/frappe/ui/messages.js index 09b6d1112b..96de5544e9 100644 --- a/frappe/public/js/frappe/ui/messages.js +++ b/frappe/public/js/frappe/ui/messages.js @@ -18,7 +18,7 @@ frappe.throw = function(msg) { msg = {message: msg, title: __('Error')}; } if(!msg.indicator) msg.indicator = 'red'; - msgprint(msg); + frappe.msgprint(msg); throw new Error(msg.message); } @@ -260,6 +260,7 @@ frappe.show_alert = function(message, seconds=7) { $('
').appendTo('body'); } + var message_html; if(message.indicator) { message_html = $('').append(message.message); } else { @@ -286,5 +287,3 @@ frappe.show_alert = function(message, seconds=7) { return div; } -// for backward compatibility -var show_alert = frappe.show_alert; diff --git a/frappe/public/js/frappe/ui/toolbar/about.js b/frappe/public/js/frappe/ui/toolbar/about.js index c0c1dae138..3ef036ad5f 100644 --- a/frappe/public/js/frappe/ui/toolbar/about.js +++ b/frappe/public/js/frappe/ui/toolbar/about.js @@ -6,8 +6,8 @@ frappe.ui.misc.about = function() { $(d.body).html(repl("
\

"+__("Open Source Applications for the Web")+"

\

\ - Website: https://frappe.io

\ -

\ + Website: https://frappe.io

\ +

\ Source: https://github.com/frappe

\
\

Installed Apps

\ @@ -31,14 +31,14 @@ frappe.ui.misc.about = function() { var show_versions = function(versions) { var $wrap = $("#about-app-versions").empty(); - $.each(keys(versions).sort(), function(i, key) { + $.each(Object.keys(versions).sort(), function(i, key) { var v = versions[key]; if(v.branch) { var text = $.format('

{0}: v{1} ({2})

', - [v.title, v.branch_version || v.version, v.branch]) + [v.title, v.branch_version || v.version, v.branch]) } else { var text = $.format('

{0}: v{1}

', - [v.title, v.version]) + [v.title, v.version]) } $(text).appendTo($wrap); }); diff --git a/frappe/public/js/frappe/ui/toolbar/awesome_bar.js b/frappe/public/js/frappe/ui/toolbar/awesome_bar.js index ed9b7c27dd..e54833f846 100644 --- a/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +++ b/frappe/public/js/frappe/ui/toolbar/awesome_bar.js @@ -138,7 +138,7 @@ frappe.search.AwesomeBar = Class.extend({ '+__("Calculate")+''+ __("e.g. (55 + 434) / 4 or =Math.sin(Math.PI/2)...")+'\ ' - msgprint(txt, __("Search Help")); + frappe.msgprint(txt, __("Search Help")); } }); }, @@ -255,7 +255,7 @@ frappe.search.AwesomeBar = Class.extend({ index: 80, default: "Calculator", onclick: function() { - msgprint(formatted_value, "Result"); + frappe.msgprint(formatted_value, "Result"); } }); } catch(e) { diff --git a/frappe/public/js/frappe/ui/toolbar/notifications.js b/frappe/public/js/frappe/ui/toolbar/notifications.js index 5b5abc9b79..9198594d8e 100644 --- a/frappe/public/js/frappe/ui/toolbar/notifications.js +++ b/frappe/public/js/frappe/ui/toolbar/notifications.js @@ -2,9 +2,9 @@ frappe.provide("frappe.ui.notifications") frappe.ui.notifications.update_notifications = function() { frappe.ui.notifications.total = 0; - var doctypes = keys(frappe.boot.notification_info.open_count_doctype).sort(); - var modules = keys(frappe.boot.notification_info.open_count_module).sort(); - var other = keys(frappe.boot.notification_info.open_count_other).sort(); + var doctypes = Object.keys(frappe.boot.notification_info.open_count_doctype).sort(); + var modules = Object.keys(frappe.boot.notification_info.open_count_module).sort(); + var other = Object.keys(frappe.boot.notification_info.open_count_other).sort(); // clear toolbar / sidebar notifications frappe.ui.notifications.dropdown_notification = $("#dropdown-notification").empty(); diff --git a/frappe/public/js/frappe/ui/toolbar/search.js b/frappe/public/js/frappe/ui/toolbar/search.js index e2c0e67430..dec4f38795 100644 --- a/frappe/public/js/frappe/ui/toolbar/search.js +++ b/frappe/public/js/frappe/ui/toolbar/search.js @@ -57,7 +57,7 @@ frappe.search.SearchDialog = Class.extend({ clearTimeout($this.data('timeout')); $this.data('timeout', setTimeout(function() { if(me.$input.val() === me.current_keyword) return; - keywords = me.$input.val(); + var keywords = me.$input.val(); if(keywords.length > 1) { me.get_results(keywords); } else { @@ -102,12 +102,12 @@ frappe.search.SearchDialog = Class.extend({ frappe.search.utils.get_global_results(me.current_keyword, current_count, me.more_count, type) .then(function(doctype_results) { - me.add_more_results(doctype_results); + me.add_more_results(doctype_results); }, function (err) { console.error(err); }); } else { - results = me.nav_lists[type].slice(0, me.more_count); + var results = me.nav_lists[type].slice(0, me.more_count); me.nav_lists[type].splice(0, me.more_count); me.add_more_results([{title: type, results: results}]); } @@ -133,6 +133,7 @@ frappe.search.SearchDialog = Class.extend({ if(me.$modal_body.find('.list-link').length > 1) { if(me.modal_state === 0) { // DOWN and UP keys navigate sidebar + var { UP_ARROW, DOWN_ARROW, TAB } = frappe.ui.keyCode; if(e.which === DOWN_ARROW || e.which === TAB) { e.preventDefault(); var $link = me.$modal_body.find('.list-link.select').next(); @@ -247,7 +248,7 @@ frappe.search.SearchDialog = Class.extend({ are_expansive = true; break; } - }; + } if(results[0].image) margin_more = "20px"; var [section_length, col_width] = are_expansive ? [3, "12"] : [4, "6"]; diff --git a/frappe/public/js/frappe/ui/toolbar/search_utils.js b/frappe/public/js/frappe/ui/toolbar/search_utils.js index 2148a88ed9..91d7edb633 100644 --- a/frappe/public/js/frappe/ui/toolbar/search_utils.js +++ b/frappe/public/js/frappe/ui/toolbar/search_utils.js @@ -5,27 +5,27 @@ frappe.search.utils = { this.recent = JSON.parse(frappe.boot.user.recent || "[]") || []; }, - get_recent_pages: function(keywords) { - var me = this; - values = [], options = []; - function find(list, keywords, process) { - list.forEach(function(item, i) { - _item = ($.isArray(item)) ? item[0] : item; - _item = __(_item || '').toLowerCase().replace(/-/g, " "); - - if(keywords===_item || _item.indexOf(keywords) !== -1) { - var option = process(item); - - if(option) { - if($.isPlainObject(option)) { - option = [option]; - } - option.forEach(function(o) { o.match = item; }); - options = option.concat(options); - } - } - }); - } + get_recent_pages: function(keywords) { + var me = this, values = [], options = []; + + function find(list, keywords, process) { + list.forEach(function(item, i) { + var _item = ($.isArray(item)) ? item[0] : item; + _item = __(_item || '').toLowerCase().replace(/-/g, " "); + + if(keywords===_item || _item.indexOf(keywords) !== -1) { + var option = process(item); + + if(option) { + if($.isPlainObject(option)) { + option = [option]; + } + option.forEach(function(o) { o.match = item; }); + options = option.concat(options); + } + } + }); + } me.recent.forEach(function(doctype, i) { values.push([doctype[1], ['Form', doctype[0], doctype[1]]]); @@ -48,7 +48,7 @@ frappe.search.utils = { }); find(values, keywords, function(match) { - out = { + var out = { route: match[1] } if(match[1][0]==='Form') { @@ -73,35 +73,35 @@ frappe.search.utils = { return out; }); - return options; + return options; }, - get_search_in_list: function(keywords) { - var me = this; + get_search_in_list: function(keywords) { + var me = this; var out = []; if(in_list(keywords.split(" "), "in") && (keywords.slice(-2) !== "in")) { - parts = keywords.split(" in "); + var parts = keywords.split(" in "); frappe.boot.user.can_read.forEach(function (item) { if(frappe.boot.user.can_search.includes(item)) { - var level = me.fuzzy_search(parts[1], item); - if(level) { - out.push({ - type: "In List", - label: __('Find {0} in {1}', [__(parts[0]), me.bolden_match_part(__(item), parts[1])]), - value: __('Find {0} in {1}', [__(parts[0]), __(item)]), - route_options: {"name": ["like", "%" + parts[0] + "%"]}, - index: 1 + level, - route: ["List", item] - }); - } - } + var level = me.fuzzy_search(parts[1], item); + if(level) { + out.push({ + type: "In List", + label: __('Find {0} in {1}', [__(parts[0]), me.bolden_match_part(__(item), parts[1])]), + value: __('Find {0} in {1}', [__(parts[0]), __(item)]), + route_options: {"name": ["like", "%" + parts[0] + "%"]}, + index: 1 + level, + route: ["List", item] + }); + } + } }); } return out; - }, + }, - get_creatables: function(keywords) { - var me = this; + get_creatables: function(keywords) { + var me = this; var out = []; if(keywords.split(" ")[0]==="new") { frappe.boot.user.can_create.forEach(function (item) { @@ -119,10 +119,10 @@ frappe.search.utils = { }); } return out; - }, + }, - get_doctypes: function(keywords) { - var me = this; + get_doctypes: function(keywords) { + var me = this; var out = []; var level, target; @@ -137,48 +137,48 @@ frappe.search.utils = { } }; frappe.boot.user.can_read.forEach(function(item) { - level = me.fuzzy_search(keywords, item); - if(level) { - target = item; - if(in_list(frappe.boot.single_types, item)) { - out.push(option("", ["Form", item, item], 0.05)); - - } else if(frappe.boot.user.can_search.includes(item)) { - // include 'making new' option - if(in_list(frappe.boot.user.can_create, item)) { - var match = item; - out.push({ - type: "New", - label: __("New {0}", [me.bolden_match_part(__(item), keywords)]), - value: __("New {0}", [__(item)]), - index: level + 0.01, - match: item, - onclick: function() { frappe.new_doc(match, true); } - }); - } - if(in_list(frappe.boot.treeviews, item)) { - out.push(option("Tree", ["Tree", item], 0.05)); - - } else { - out.push(option("List", ["List", item], 0.05)); - if(frappe.model.can_get_report(item)) { - out.push(option("Report", ["Report", item], 0.04)); - } - if(frappe.boot.calendars.indexOf(item) !== -1) { - out.push(option("Calendar", ["List", item, "Calendar"], 0.03)); - out.push(option("Gantt", ["List", item, "Gantt"], 0.02)); - } - } - } - } + level = me.fuzzy_search(keywords, item); + if(level) { + target = item; + if(in_list(frappe.boot.single_types, item)) { + out.push(option("", ["Form", item, item], 0.05)); + + } else if(frappe.boot.user.can_search.includes(item)) { + // include 'making new' option + if(in_list(frappe.boot.user.can_create, item)) { + var match = item; + out.push({ + type: "New", + label: __("New {0}", [me.bolden_match_part(__(item), keywords)]), + value: __("New {0}", [__(item)]), + index: level + 0.01, + match: item, + onclick: function() { frappe.new_doc(match, true); } + }); + } + if(in_list(frappe.boot.treeviews, item)) { + out.push(option("Tree", ["Tree", item], 0.05)); + + } else { + out.push(option("List", ["List", item], 0.05)); + if(frappe.model.can_get_report(item)) { + out.push(option("Report", ["Report", item], 0.04)); + } + if(frappe.boot.calendars.indexOf(item) !== -1) { + out.push(option("Calendar", ["List", item, "Calendar"], 0.03)); + out.push(option("Gantt", ["List", item, "Gantt"], 0.02)); + } + } + } + } }); return out; - }, + }, - get_reports: function(keywords) { - var me = this; + get_reports: function(keywords) { + var me = this; var out = []; - var route; + var route; Object.keys(frappe.boot.user.all_reports).forEach(function(item) { var level = me.fuzzy_search(keywords, item); if(level > 0) { @@ -188,7 +188,7 @@ frappe.search.utils = { else route = ["query-report", item]; out.push({ - type: "Report", + type: "Report", label: __("Report {0}" , [me.bolden_match_part(__(item), keywords)]), value: __("Report {0}" , [__(item)]), index: level, @@ -197,10 +197,10 @@ frappe.search.utils = { } }); return out; - }, + }, - get_pages: function(keywords) { - var me = this; + get_pages: function(keywords) { + var me = this; var out = []; this.pages = {}; $.each(frappe.boot.page_info, function(name, p) { @@ -221,8 +221,8 @@ frappe.search.utils = { }); } }); - var target = 'Calendar'; - if(__('calendar').indexOf(keywords.toLowerCase()) === 0) { + var target = 'Calendar'; + if(__('calendar').indexOf(keywords.toLowerCase()) === 0) { out.push({ type: "Calendar", value: __("Open {0}", [__(target)]), @@ -231,7 +231,7 @@ frappe.search.utils = { route: ['List', 'Event', target], }); } - if(__('email inbox').indexOf(keywords.toLowerCase()) === 0) { + if(__('email inbox').indexOf(keywords.toLowerCase()) === 0) { out.push({ type: "Inbox", value: __("Open {0}", [__('Email Inbox')]), @@ -241,17 +241,17 @@ frappe.search.utils = { }); } return out; - }, + }, - get_modules: function(keywords) { - var me = this; + get_modules: function(keywords) { + var me = this; var out = []; Object.keys(frappe.modules).forEach(function(item) { var level = me.fuzzy_search(keywords, item); if(level > 0) { var module = frappe.modules[item]; if(module._doctype) return; - ret = { + var ret = { type: "Module", label: __("Open {0}", [me.bolden_match_part(__(item), keywords)]), value: __("Open {0}", [__(item)]), @@ -266,196 +266,196 @@ frappe.search.utils = { } }); return out; - }, - - get_global_results: function (keywords, start, limit, doctype = "") { - var me = this; - function get_results_sets(data) { - var results_sets = [], result, set; - function get_existing_set (doctype) { - return results_sets.find(function(set) { - return set.title === doctype; - }); - } - - function make_description(content, doc_name) { - var parts = content.split(" ||| "); - var result_max_length = 300; - var field_length = 120; - var fields = []; - var result_current_length = 0; - var field_text = ""; - for(var i = 0; i < parts.length; i++) { - part = parts[i]; - if(part.toLowerCase().indexOf(keywords) !== -1) { - // If the field contains the keyword - if(part.indexOf(' &&& ') !== -1) { - var colon_index = part.indexOf(' &&& '); - var field_value = part.slice(colon_index + 5); - } else { - var colon_index = part.indexOf(' : '); - var field_value = part.slice(colon_index + 3); - } - if(field_value.length > field_length) { - // If field value exceeds field_length, find the keyword in it - // and trim field value by half the field_length at both sides - // ellipsify if necessary - var field_data = ""; - var index = field_value.indexOf(keywords); - field_data += index < field_length/2 ? field_value.slice(0, index) - : '...' + field_value.slice(index - field_length/2, index) - field_data += field_value.slice(index, index + field_length/2); - field_data += index + field_length/2 < field_value.length ? "..." : ""; - field_value = field_data; - } - var field_name = part.slice(0, colon_index); - - // Find remaining result_length and add field length to result_current_length - var remaining_length = result_max_length - result_current_length; - result_current_length += field_name.length + field_value.length + 2; - if(result_current_length < result_max_length) { - // We have room, push the entire field - field_text = '' + - me.bolden_match_part(field_name, keywords) + ': ' + - me.bolden_match_part(field_value, keywords); - if(fields.indexOf(field_text) === -1 && doc_name !== field_value) { - fields.push(field_text); - } - } else { - // Not enough room - if(field_name.length < remaining_length){ - // Ellipsify (trim at word end) and push - remaining_length -= field_name.length; - field_text = '' + - me.bolden_match_part(field_name, keywords) + ': '; - field_value = field_value.slice(0, remaining_length); - field_value = field_value.slice(0, field_value.lastIndexOf(' ')) + ' ...'; - field_text += me.bolden_match_part(field_value, keywords); - fields.push(field_text); - } else { - // No room for even the field name, skip - fields.push('...'); - } - break; - } - } - } - return fields.join(', '); - } - - data.forEach(function(d) { - // more properties - result = { - label: d.name, - value: d.name, - description: make_description(d.content, d.name), - route: ['Form', d.doctype, d.name], - } - if(d.image || d.image === null){ - result.image = d.image; - } - set = get_existing_set(d.doctype); - if(set) { - set.results.push(result); - } else { - set = { - title: d.doctype, - results: [result], - fetch_type: "Global" - } - results_sets.push(set); - } - - }); - return results_sets; - } - return new Promise(function(resolve, reject) { - frappe.call({ - method: "frappe.utils.global_search.search", - args: { - text: keywords, - start: start, - limit: limit, - doctype: doctype - }, - callback: function(r) { - if(r.message) { - resolve(get_results_sets(r.message)); - } else { - resolve([]); - } - } - }); - }); - }, - - get_help_results: function(keywords) { - function get_results_set(data) { - var result; - var set = { - title: "Help", - fetch_type: "Help", - results: [] - } - data.forEach(function(d) { - // more properties - result = { - label: d[0], - value: d[0], - description: d[1], - data_path: d[2], - onclick: function() { - - } - } - set.results.push(result); - }); - return [set]; - } - return new Promise(function(resolve, reject) { - frappe.call({ - method: "frappe.utils.help.get_help", - args: { - text: keywords - }, - callback: function(r) { - if(r.message) { - resolve(get_results_set(r.message)); - } else { - resolve([]); - } - } - }); - }); - }, - - get_nav_results: function(keywords) { - function sort_uniques(array) { - var routes = [], out = []; - array.forEach(function(d) { - if(d.route) { - if(d.route[0] === "List" && d.route[2]) { - d.route.splice(2); - } - var str_route = d.route.join('/'); - if(routes.indexOf(str_route) === -1) { - routes.push(str_route); - out.push(d); - } else { - var old = routes.indexOf(str_route); - if(out[old].index > d.index) { - out[old] = d; - } - } - } else { - out.push(d); - } - }); - return out.sort(function(a, b) { - return b.index - a.index; - }); - } - var lists = [], setup = []; + }, + + get_global_results: function (keywords, start, limit, doctype = "") { + var me = this; + function get_results_sets(data) { + var results_sets = [], result, set; + function get_existing_set (doctype) { + return results_sets.find(function(set) { + return set.title === doctype; + }); + } + + function make_description(content, doc_name) { + var parts = content.split(" ||| "); + var result_max_length = 300; + var field_length = 120; + var fields = []; + var result_current_length = 0; + var field_text = ""; + for(var i = 0; i < parts.length; i++) { + var part = parts[i]; + if(part.toLowerCase().indexOf(keywords) !== -1) { + // If the field contains the keyword + if(part.indexOf(' &&& ') !== -1) { + var colon_index = part.indexOf(' &&& '); + var field_value = part.slice(colon_index + 5); + } else { + var colon_index = part.indexOf(' : '); + var field_value = part.slice(colon_index + 3); + } + if(field_value.length > field_length) { + // If field value exceeds field_length, find the keyword in it + // and trim field value by half the field_length at both sides + // ellipsify if necessary + var field_data = ""; + var index = field_value.indexOf(keywords); + field_data += index < field_length/2 ? field_value.slice(0, index) + : '...' + field_value.slice(index - field_length/2, index) + field_data += field_value.slice(index, index + field_length/2); + field_data += index + field_length/2 < field_value.length ? "..." : ""; + field_value = field_data; + } + var field_name = part.slice(0, colon_index); + + // Find remaining result_length and add field length to result_current_length + var remaining_length = result_max_length - result_current_length; + result_current_length += field_name.length + field_value.length + 2; + if(result_current_length < result_max_length) { + // We have room, push the entire field + field_text = '' + + me.bolden_match_part(field_name, keywords) + ': ' + + me.bolden_match_part(field_value, keywords); + if(fields.indexOf(field_text) === -1 && doc_name !== field_value) { + fields.push(field_text); + } + } else { + // Not enough room + if(field_name.length < remaining_length){ + // Ellipsify (trim at word end) and push + remaining_length -= field_name.length; + field_text = '' + + me.bolden_match_part(field_name, keywords) + ': '; + field_value = field_value.slice(0, remaining_length); + field_value = field_value.slice(0, field_value.lastIndexOf(' ')) + ' ...'; + field_text += me.bolden_match_part(field_value, keywords); + fields.push(field_text); + } else { + // No room for even the field name, skip + fields.push('...'); + } + break; + } + } + } + return fields.join(', '); + } + + data.forEach(function(d) { + // more properties + result = { + label: d.name, + value: d.name, + description: make_description(d.content, d.name), + route: ['Form', d.doctype, d.name], + } + if(d.image || d.image === null){ + result.image = d.image; + } + set = get_existing_set(d.doctype); + if(set) { + set.results.push(result); + } else { + set = { + title: d.doctype, + results: [result], + fetch_type: "Global" + } + results_sets.push(set); + } + + }); + return results_sets; + } + return new Promise(function(resolve, reject) { + frappe.call({ + method: "frappe.utils.global_search.search", + args: { + text: keywords, + start: start, + limit: limit, + doctype: doctype + }, + callback: function(r) { + if(r.message) { + resolve(get_results_sets(r.message)); + } else { + resolve([]); + } + } + }); + }); + }, + + get_help_results: function(keywords) { + function get_results_set(data) { + var result; + var set = { + title: "Help", + fetch_type: "Help", + results: [] + } + data.forEach(function(d) { + // more properties + result = { + label: d[0], + value: d[0], + description: d[1], + data_path: d[2], + onclick: function() { + + } + } + set.results.push(result); + }); + return [set]; + } + return new Promise(function(resolve, reject) { + frappe.call({ + method: "frappe.utils.help.get_help", + args: { + text: keywords + }, + callback: function(r) { + if(r.message) { + resolve(get_results_set(r.message)); + } else { + resolve([]); + } + } + }); + }); + }, + + get_nav_results: function(keywords) { + function sort_uniques(array) { + var routes = [], out = []; + array.forEach(function(d) { + if(d.route) { + if(d.route[0] === "List" && d.route[2]) { + d.route.splice(2); + } + var str_route = d.route.join('/'); + if(routes.indexOf(str_route) === -1) { + routes.push(str_route); + out.push(d); + } else { + var old = routes.indexOf(str_route); + if(out[old].index > d.index) { + out[old] = d; + } + } + } else { + out.push(d); + } + }); + return out.sort(function(a, b) { + return b.index - a.index; + }); + } + var lists = [], setup = []; var all_doctypes = sort_uniques(this.get_doctypes(keywords)); all_doctypes.forEach(function(d) { if(d.type === "") { @@ -464,37 +464,37 @@ frappe.search.utils = { lists.push(d); } }); - var in_keyword = keywords.split(" in ")[0]; + var in_keyword = keywords.split(" in ")[0]; return [ - {title: "Recents", fetch_type: "Nav", results: sort_uniques(this.get_recent_pages(keywords))}, - {title: "Create a new ...", fetch_type: "Nav", results: sort_uniques(this.get_creatables(keywords))}, - {title: "Find '" + in_keyword + "' in ... ", fetch_type: "Nav", results: sort_uniques(this.get_search_in_list(keywords))}, - {title: "Lists", fetch_type: "Nav", results: lists}, + {title: "Recents", fetch_type: "Nav", results: sort_uniques(this.get_recent_pages(keywords))}, + {title: "Create a new ...", fetch_type: "Nav", results: sort_uniques(this.get_creatables(keywords))}, + {title: "Find '" + in_keyword + "' in ... ", fetch_type: "Nav", results: sort_uniques(this.get_search_in_list(keywords))}, + {title: "Lists", fetch_type: "Nav", results: lists}, {title: "Reports", fetch_type: "Nav", results: sort_uniques(this.get_reports(keywords))}, - {title: "Administration", fetch_type: "Nav", results: sort_uniques(this.get_pages(keywords))}, + {title: "Administration", fetch_type: "Nav", results: sort_uniques(this.get_pages(keywords))}, {title: "Modules", fetch_type: "Nav", results: sort_uniques(this.get_modules(keywords))}, - {title: "Setup", fetch_type: "Nav", results: setup}, - ] - }, + {title: "Setup", fetch_type: "Nav", results: setup}, + ] + }, - fuzzy_search: function(keywords, _item) { - // Returns 10 for case-perfect contain, 0 for not found - // 9 for perfect contain, - // 0 - 6 for fuzzy contain + fuzzy_search: function(keywords, _item) { + // Returns 10 for case-perfect contain, 0 for not found + // 9 for perfect contain, + // 0 - 6 for fuzzy contain - // **Specific use-case step** - item = __(_item || '').replace(/-/g, " "); + // **Specific use-case step** + var item = __(_item || '').replace(/-/g, " "); var ilen = item.length; var klen = keywords.length; - var length_ratio = klen/ilen; - var max_skips = 3, max_mismatch_len = 2; + var length_ratio = klen/ilen; + var max_skips = 3, max_mismatch_len = 2; if (klen > ilen) { return 0; } - if(keywords === item || item.toLowerCase().indexOf(keywords) === 0) { - return 10 + length_ratio; - } + if(keywords === item || item.toLowerCase().indexOf(keywords) === 0) { + return 10 + length_ratio; + } if (item.indexOf(keywords) !== -1 && keywords !== keywords.toLowerCase()) { return 9 + length_ratio; @@ -507,11 +507,11 @@ frappe.search.utils = { return 8 + length_ratio; } - var skips = 0, mismatches = 0; + var skips = 0, mismatches = 0; outer: for (var i = 0, j = 0; i < klen; i++) { if(mismatches !== 0) skips++; if(skips > max_skips) return 0; - var k_ch = keywords.charCodeAt(i); + var k_ch = keywords.charCodeAt(i); mismatches = 0; while (j < ilen) { if (item.charCodeAt(j++) === k_ch) { @@ -522,49 +522,92 @@ frappe.search.utils = { return 0; } - // Since indexOf didn't pass, there will be atleast 1 skip - // hence no divide by zero, but just to be safe - if((skips + mismatches) > 0) { - return (5 + length_ratio)/(skips + mismatches); - } else { - return 0; - } + // Since indexOf didn't pass, there will be atleast 1 skip + // hence no divide by zero, but just to be safe + if((skips + mismatches) > 0) { + return (5 + length_ratio)/(skips + mismatches); + } else { + return 0; + } }, - bolden_match_part: function(str, subseq) { + bolden_match_part: function(str, subseq) { var rendered = ""; - if(this.fuzzy_search(subseq, str) === 0) { - return str; - } else if(this.fuzzy_search(subseq, str) > 6) { - var regEx = new RegExp("("+ subseq +")", "ig"); - return str.replace(regEx, '$1'); - } else { - var str_orig = str; - var str = str.toLowerCase(); - var str_len = str.length; - var subseq = subseq.toLowerCase(); - - outer: for(var i = 0, j = 0; i < subseq.length; i++) { - var sub_ch = subseq.charCodeAt(i); - while(j < str_len) { - if(str.charCodeAt(j) === sub_ch) { - var str_char = str_orig.charAt(j); - if(str_char === str_char.toLowerCase()) { - rendered += '' + subseq.charAt(i) + ''; - } else { - rendered += '' + subseq.charAt(i).toUpperCase() + ''; - } - j++; - continue outer; - } - rendered += str_orig.charAt(j); - j++; - } - return str_orig; - } - rendered += str_orig.slice(j); - return rendered; - } - - }, +<<<<<<< HEAD + if(this.fuzzy_search(subseq, str) === 0) { + return str; + } else if(this.fuzzy_search(subseq, str) > 6) { + var regEx = new RegExp("("+ subseq +")", "ig"); + return str.replace(regEx, '$1'); + } else { + var str_orig = str; + var str = str.toLowerCase(); + var str_len = str.length; + var subseq = subseq.toLowerCase(); + + outer: for(var i = 0, j = 0; i < subseq.length; i++) { + var sub_ch = subseq.charCodeAt(i); + while(j < str_len) { + if(str.charCodeAt(j) === sub_ch) { + var str_char = str_orig.charAt(j); + if(str_char === str_char.toLowerCase()) { + rendered += '' + subseq.charAt(i) + ''; + } else { + rendered += '' + subseq.charAt(i).toUpperCase() + ''; + } + j++; + continue outer; + } + rendered += str_orig.charAt(j); + j++; + } + return str_orig; + } + rendered += str_orig.slice(j); + return rendered; + } + + }, +} +======= + if(this.fuzzy_search(subseq, str) === 0) { + return str; + } else if(this.fuzzy_search(subseq, str) > 6) { + var regEx = new RegExp("("+ subseq +")", "ig"); + return str.replace(regEx, '$1'); + } else { + var str_orig = str; + var str = str.toLowerCase(); + var str_len = str.length; + var subseq = subseq.toLowerCase(); + + outer: for(var i = 0, j = 0; i < subseq.length; i++) { + var sub_ch = subseq.charCodeAt(i); + while(j < str_len) { + if(str.charCodeAt(j) === sub_ch) { + var str_char = str_orig.charAt(j); + if(str_char === str_char.toLowerCase()) { + rendered += '' + subseq.charAt(i) + ''; + } else { + rendered += '' + subseq.charAt(i).toUpperCase() + ''; + } + j++; + continue outer; + } + rendered += str_orig.charAt(j); + j++; + } + return str_orig; + } + rendered += str_orig.slice(j); + return rendered; + } + + }, + + unscrub_and_titlecase: function(str) { + return __(str || '').replace(/-|_/g, " ").replace(/\w*/g, + function(keywords){return keywords.charAt(0).toUpperCase() + keywords.substr(1).toLowerCase();}); + }, } +>>>>>>> Remove all implicit global variables diff --git a/frappe/public/js/frappe/ui/toolbar/toolbar.js b/frappe/public/js/frappe/ui/toolbar/toolbar.js index 70ef6b71af..24fe005afb 100644 --- a/frappe/public/js/frappe/ui/toolbar/toolbar.js +++ b/frappe/public/js/frappe/ui/toolbar/toolbar.js @@ -162,7 +162,7 @@ frappe.ui.toolbar.Toolbar = Class.extend({ function show_results(e) { //edit links - href = e.target.href; + var href = e.target.href; if(href.indexOf('blob') > 0) { window.open(href, '_blank'); } @@ -220,7 +220,7 @@ frappe.ui.toolbar.clear_cache = function() { frappe.assets.clear_local_storage(); $c('frappe.sessions.clear',{},function(r,rt){ if(!r.exc) { - show_alert(r.message); + frappe.show_alert(r.message); location.reload(true); } }); @@ -228,7 +228,7 @@ frappe.ui.toolbar.clear_cache = function() { } frappe.ui.toolbar.download_backup = function() { - msgprint(__("Your download is being built, this may take a few moments...")); + frappe.msgprint(__("Your download is being built, this may take a few moments...")); $c('frappe.utils.backups.get_backup',{},function(r,rt) {}); return false; } diff --git a/frappe/public/js/frappe/ui/tree.js b/frappe/public/js/frappe/ui/tree.js index 0e6455606a..33e57ae3d9 100644 --- a/frappe/public/js/frappe/ui/tree.js +++ b/frappe/public/js/frappe/ui/tree.js @@ -231,7 +231,7 @@ frappe.ui.TreeNode = Class.extend({ }, load: function(callback) { var node = this; - args = $.extend(this.tree.args || {}, { + var args = $.extend(this.tree.args || {}, { parent: this.data.value }); diff --git a/frappe/public/js/frappe/upload.js b/frappe/public/js/frappe/upload.js index b80b3b21d5..0b48896864 100644 --- a/frappe/public/js/frappe/upload.js +++ b/frappe/public/js/frappe/upload.js @@ -219,7 +219,7 @@ frappe.upload = { if(opts.on_no_attach) { opts.on_no_attach(); } else { - msgprint(__("Please attach a file or set a URL")); + frappe.msgprint(__("Please attach a file or set a URL")); } return; } @@ -267,21 +267,21 @@ frappe.upload = { args.filename = fileobj.name.split(' ').join('_'); if(opts.options && opts.options.toLowerCase()=="image") { if(!frappe.utils.is_image_file(args.filename)) { - msgprint(__("Only image extensions (.gif, .jpg, .jpeg, .tiff, .png, .svg) allowed")); + frappe.msgprint(__("Only image extensions (.gif, .jpg, .jpeg, .tiff, .png, .svg) allowed")); return; } } if((opts.max_width || opts.max_height) && frappe.utils.is_image_file(args.filename)) { frappe.utils.resize_image(freader, function(_dataurl) { - dataurl = _dataurl; + var dataurl = _dataurl; args.filedata = _dataurl.split(",")[1]; args.file_size = Math.round(args.filedata.length * 3 / 4); console.log("resized!") frappe.upload._upload_file(fileobj, args, opts, dataurl); }) } else { - dataurl = freader.result; + var dataurl = freader.result; args.filedata = freader.result.split(",")[1]; args.file_size = fileobj.size; frappe.upload._upload_file(fileobj, args, opts, dataurl); @@ -292,11 +292,11 @@ frappe.upload = { }, upload_to_server: function(fileobj, args, opts, dataurl) { - // var msgbox = msgprint(__("Uploading...")); + // var msgbox = frappe.msgprint(__("Uploading...")); if(opts.start) { opts.start(); } - ajax_args = { + var ajax_args = { "method": "uploadfile", args: args, callback: function(r) { diff --git a/frappe/public/js/frappe/views/calendar/calendar.js b/frappe/public/js/frappe/views/calendar/calendar.js index 6c5fdff43d..3401999774 100644 --- a/frappe/public/js/frappe/views/calendar/calendar.js +++ b/frappe/public/js/frappe/views/calendar/calendar.js @@ -264,7 +264,7 @@ frappe.views.Calendar = Class.extend({ args: me.get_update_args(event), callback: function(r) { if(r.exc) { - show_alert(__("Unable to update event")); + frappe.show_alert(__("Unable to update event")); revertFunc(); } }, @@ -346,7 +346,7 @@ frappe.views.Calendar = Class.extend({ $.each(frappe.route_options, function(k, value) { if(me.page.fields_dict[k]) { me.page.fields_dict[k].set_input(value); - }; + } }) frappe.route_options = null; me.refresh(); diff --git a/frappe/public/js/frappe/views/communication.js b/frappe/public/js/frappe/views/communication.js index 6f00823481..d6082fba94 100755 --- a/frappe/public/js/frappe/views/communication.js +++ b/frappe/public/js/frappe/views/communication.js @@ -85,8 +85,8 @@ frappe.views.CommunicationComposer = Class.extend({ ]; // add from if user has access to multiple email accounts - email_accounts = frappe.boot.email_accounts.filter(function(account, idx){ - return !inList(["All Accounts", "Sent", "Spam", "Trash"], account.email_account) && + var email_accounts = frappe.boot.email_accounts.filter(function(account, idx){ + return !in_list(["All Accounts", "Sent", "Spam", "Trash"], account.email_account) && account.enable_outgoing }) if(frappe.boot.email_accounts && email_accounts.length > 1) { @@ -168,7 +168,7 @@ frappe.views.CommunicationComposer = Class.extend({ var content = content_field.get_value() || ""; var subject = subject_field.get_value() || ""; - parts = content.split(''); + var parts = content.split(''); if(parts.length===2) { content = [reply.message, "
", parts[1]]; @@ -318,8 +318,8 @@ frappe.views.CommunicationComposer = Class.extend({ if(me.frm) { args = { args: (me.frm.attachments.get_args - ? me.frm.attachments.get_args() - : { from_form: 1,folder:"Home/Attachments" }), + ? me.frm.attachments.get_args() + : { from_form: 1,folder:"Home/Attachments" }), callback: function (attachment, r) { me.frm.attachments.attachment_uploaded(attachment, r) }, @@ -442,10 +442,10 @@ frappe.views.CommunicationComposer = Class.extend({ send_email: function(btn, form_values, selected_attachments, print_html, print_format) { var me = this; - if((form_values.send_email || form_values.communication_medium === "Email") && !form_values.recipients){ - msgprint(__("Enter Email Recipient(s)")); - return; - } + if((form_values.send_email || form_values.communication_medium === "Email") && !form_values.recipients) { + frappe.msgprint(__("Enter Email Recipient(s)")); + return; + } if(!form_values.attach_document_print) { print_html = null; @@ -454,13 +454,13 @@ frappe.views.CommunicationComposer = Class.extend({ if(form_values.send_email) { if(cur_frm && !frappe.model.can_email(me.doc.doctype, cur_frm)) { - msgprint(__("You are not allowed to send emails related to this document")); + frappe.msgprint(__("You are not allowed to send emails related to this document")); return; } form_values.communication_medium = "Email"; form_values.sent_or_received = "Sent"; - }; + } return frappe.call({ method:"frappe.core.doctype.communication.email.make", @@ -489,7 +489,7 @@ frappe.views.CommunicationComposer = Class.extend({ frappe.utils.play_sound("email"); if(form_values.send_email && r.message["emails_not_sent_to"]) { - msgprint( __("Email not sent to {0} (unsubscribed / disabled)", + frappe.msgprint(__("Email not sent to {0} (unsubscribed / disabled)", [ frappe.utils.escape_html(r.message["emails_not_sent_to"]) ]) ); } @@ -504,7 +504,7 @@ frappe.views.CommunicationComposer = Class.extend({ cur_frm.reload_doc(); } } else { - msgprint(__("There were errors while sending email. Please try again.")); + frappe.msgprint(__("There were errors while sending email. Please try again.")); } } }); @@ -554,7 +554,7 @@ frappe.views.CommunicationComposer = Class.extend({ setup_awesomplete: function() { var me = this; [this.dialog.fields_dict.recipients.input, - this.dialog.fields_dict.cc.input] + this.dialog.fields_dict.cc.input] .map(function(input) { me.setup_awesomplete_for_input(input); }); diff --git a/frappe/public/js/frappe/views/gantt/gantt_view.js b/frappe/public/js/frappe/views/gantt/gantt_view.js index 704a5a26a2..b83acd241f 100644 --- a/frappe/public/js/frappe/views/gantt/gantt_view.js +++ b/frappe/public/js/frappe/views/gantt/gantt_view.js @@ -181,7 +181,7 @@ frappe.views.GanttView = frappe.views.ListRenderer.extend({ }, callback: function() { me.gantt.updating_task = false; - show_alert({message:__("Saved"), indicator: 'green'}, 1); + frappe.show_alert({message:__("Saved"), indicator: 'green'}, 1); } }); }, @@ -198,7 +198,7 @@ frappe.views.GanttView = frappe.views.ListRenderer.extend({ } else { // reset gantt state this.gantt.change_view_mode(this.gantt_view_mode); - show_alert({message: __("Not permitted"), indicator: 'red'}, 1); + frappe.show_alert({message: __("Not permitted"), indicator: 'red'}, 1); return false; } }, diff --git a/frappe/public/js/frappe/views/image/image_view.js b/frappe/public/js/frappe/views/image/image_view.js index b35fd04456..9113ff146f 100644 --- a/frappe/public/js/frappe/views/image/image_view.js +++ b/frappe/public/js/frappe/views/image/image_view.js @@ -169,7 +169,7 @@ frappe.views.GalleryView = Class.extend({ freeze_message: "Fetching Images.." }).then(function(r) { if (!r.message) { - msgprint("No Images found") + frappe.msgprint("No Images found") } else { // filter image files from other var images = r.message.filter(function(image) { diff --git a/frappe/public/js/frappe/views/inbox/inbox_view.js b/frappe/public/js/frappe/views/inbox/inbox_view.js index 15a8af013f..25cbcfafb2 100644 --- a/frappe/public/js/frappe/views/inbox/inbox_view.js +++ b/frappe/public/js/frappe/views/inbox/inbox_view.js @@ -20,7 +20,7 @@ frappe.views.InboxView = frappe.views.ListRenderer.extend({ render_inbox_view: function() { var html = "" - email_account = this.get_current_email_account() + var email_account = this.get_current_email_account() if(email_account) html = this.emails.map(this.render_email_row.bind(this)).join(""); else @@ -78,7 +78,7 @@ frappe.views.InboxView = frappe.views.ListRenderer.extend({ ["Communication", "email_status", "not in", "Spam,Trash", true], ]) } - else if (inList(["Spam", "Trash"], email_account)) { + else if (in_list(["Spam", "Trash"], email_account)) { filters = default_filters.concat([ ["Communication", "email_status", "=", email_account, true], ["Communication", "email_account", "in", frappe.boot.all_accounts, true] @@ -115,6 +115,7 @@ frappe.views.InboxView = frappe.views.ListRenderer.extend({ get_current_email_account: function() { var route = frappe.get_route(); if(!route[3] && frappe.boot.email_accounts.length) { + var email_account; if(frappe.boot.email_accounts[0].email_id == "All Accounts") { email_account = "All Accounts" } else { @@ -130,8 +131,9 @@ frappe.views.InboxView = frappe.views.ListRenderer.extend({ }, make_no_result: function () { var no_result_message = "" - email_account = this.get_current_email_account(); - if (inList(["Spam", "Trash"], email_account)) { + var email_account = this.get_current_email_account(); + var args; + if (in_list(["Spam", "Trash"], email_account)) { return __("No {0} mail", [email_account]) } else if(!email_account && !frappe.boot.email_accounts.length) { // email account is not configured @@ -159,7 +161,7 @@ frappe.views.InboxView = frappe.views.ListRenderer.extend({ doc: {} }) } else { - frappe.route_options = { 'email_id': user_email } + frappe.route_options = { 'email_id': frappe.session.user_email } frappe.new_doc(this.no_result_doctype) } } diff --git a/frappe/public/js/frappe/views/kanban/kanban_board.js b/frappe/public/js/frappe/views/kanban/kanban_board.js index 1450aca7b1..097df1b811 100644 --- a/frappe/public/js/frappe/views/kanban/kanban_board.js +++ b/frappe/public/js/frappe/views/kanban/kanban_board.js @@ -119,7 +119,7 @@ frappe.provide("frappe.views"); }).then(function(r) { saving_filters = false; updater.set({ filters_modified: false }); - show_alert({ + frappe.show_alert({ message: __('Filters saved'), indicator: 'green' }, 0.5); @@ -819,37 +819,6 @@ frappe.provide("frappe.views"); }) } - function edit_card_title_old() { - - self.$card.find('.kanban-card-edit').on('click', function (e) { - e.stopPropagation(); - $edit_card_area.show(); - $kanban_card_area.hide(); - $textarea.focus(); - }); - - $textarea.on('blur', function () { - $edit_card_area.hide(); - $kanban_card_area.show(); - }); - - $textarea.keydown(function (e) { - if (e.which === 13) { - e.preventDefault(); - var new_title = $textarea.val(); - if (card.title === new_title) { - return; - } - get_doc().then(function () { - var tf = store.getState().card_meta.title_field.fieldname; - var doc = card.doc; - doc[tf] = new_title; - fluxify.doAction('update_doc', doc, card); - }) - } - }) - } - init(); } @@ -1020,7 +989,7 @@ frappe.provide("frappe.views"); }, callback: function (r) { frappe.model.clear_doc(doc.doctype, doc.name); - show_alert({ message: __("Saved"), indicator: 'green' }, 1); + frappe.show_alert({ message: __("Saved"), indicator: 'green' }, 1); } }); } diff --git a/frappe/public/js/frappe/views/pageview.js b/frappe/public/js/frappe/views/pageview.js index e763c2cc97..7f3f42b4ce 100644 --- a/frappe/public/js/frappe/views/pageview.js +++ b/frappe/public/js/frappe/views/pageview.js @@ -6,7 +6,7 @@ frappe.provide("frappe.standard_pages"); frappe.views.pageview = { with_page: function(name, callback) { - if(in_list(keys(frappe.standard_pages), name)) { + if(in_list(Object.keys(frappe.standard_pages), name)) { if(!frappe.pages[name]) { frappe.standard_pages[name](); } diff --git a/frappe/public/js/frappe/views/reports/grid_report.js b/frappe/public/js/frappe/views/reports/grid_report.js index 9e7f7ad2c0..39f173e5bb 100644 --- a/frappe/public/js/frappe/views/reports/grid_report.js +++ b/frappe/public/js/frappe/views/reports/grid_report.js @@ -7,7 +7,7 @@ $.extend(frappe.report_dump, { data: {}, last_modified: {}, with_data: function(doctypes, callback) { - var pre_loaded = keys(frappe.report_dump.last_modified); + var pre_loaded = Object.keys(frappe.report_dump.last_modified); return frappe.call({ method: "frappe.desk.report_dump.get_data", type: "GET", @@ -148,10 +148,10 @@ frappe.views.GridReport = Class.extend({ var me = this; $.each(me.filter_inputs, function(i, v) { var opts = v.get(0).opts; - if(opts.fieldtype == "Select" && inList(me.doctypes, opts.link)) { + if(opts.fieldtype == "Select" && in_list(me.doctypes, opts.link)) { $(v).add_options($.map(frappe.report_dump.data[opts.link], function(d) { return d.name; })); - } else if(opts.fieldtype == "Link" && inList(me.doctypes, opts.link)) { + } else if(opts.fieldtype == "Link" && in_list(me.doctypes, opts.link)) { opts.list = $.map(frappe.report_dump.data[opts.link], function(d) { return d.name; }); me.set_autocomplete(v, opts.list); @@ -201,7 +201,7 @@ frappe.views.GridReport = Class.extend({ filters.val(value); } } else { - msgprint(__("Invalid Filter: {0}", [key])) + frappe.msgprint(__("Invalid Filter: {0}", [key])) } }, set_autocomplete: function($filter, list) { @@ -219,8 +219,8 @@ frappe.views.GridReport = Class.extend({ var me = this; $.each(this.filter_inputs, function(key, filter) { var opts = filter.get(0).opts; - if(sys_defaults[key]) { - filter.val(sys_defaults[key]); + if(frappe.sys_defaults[key]) { + filter.val(frappe.sys_defaults[key]); } else if(opts.fieldtype=='Select') { filter.get(0).selectedIndex = 0; } else if(opts.fieldtype=='Data') { @@ -235,8 +235,8 @@ frappe.views.GridReport = Class.extend({ set_default_values: function() { var values = { - from_date: dateutil.str_to_user(sys_defaults.year_start_date), - to_date: dateutil.str_to_user(sys_defaults.year_end_date) + from_date: frappe.datetime.str_to_user(frappe.sys_defaults.year_start_date), + to_date: frappe.datetime.str_to_user(frappe.sys_defaults.year_end_date) } var me = this; @@ -298,7 +298,7 @@ frappe.views.GridReport = Class.extend({ } else if(opts.fieldtype!='Button') { me[opts.fieldname] = f.val(); if(opts.fieldtype=="Date") { - me[opts.fieldname] = dateutil.user_to_str(me[opts.fieldname]); + me[opts.fieldname] = frappe.datetime.user_to_str(me[opts.fieldname]); } else if (opts.fieldtype == "Select") { me[opts.fieldname+'_default'] = opts.default_value; } @@ -306,7 +306,7 @@ frappe.views.GridReport = Class.extend({ }); if(this.filter_inputs.from_date && this.filter_inputs.to_date && (this.to_date < this.from_date)) { - msgprint(__("From Date must be before To Date")); + frappe.msgprint(__("From Date must be before To Date")); return; } @@ -359,7 +359,7 @@ frappe.views.GridReport = Class.extend({ this.round_off_data(); this.prepare_data_view(); // chart might need prepared data - show_alert("Updated", 2); + frappe.show_alert("Updated", 2); this.render(); this.setup_chart && this.setup_chart(); }, @@ -458,7 +458,7 @@ frappe.views.GridReport = Class.extend({ var filters = this.filter_inputs; if(item._show) return true; - for (i in filters) { + for (var i in filters) { if(!this.apply_filter(item, i)) { return false; } @@ -502,7 +502,7 @@ frappe.views.GridReport = Class.extend({ return this[fieldname]==this[fieldname + "_default"]; }, date_formatter: function(row, cell, value, columnDef, dataContext) { - return dateutil.str_to_user(value); + return frappe.datetime.str_to_user(value); }, currency_formatter: function(row, cell, value, columnDef, dataContext) { return repl('
%(value)s
', { @@ -586,9 +586,9 @@ frappe.views.GridReport = Class.extend({ var me = this; var range = this.filter_inputs.range.val(); - this.from_date = dateutil.user_to_str(this.filter_inputs.from_date.val()); - this.to_date = dateutil.user_to_str(this.filter_inputs.to_date.val()); - var date_diff = dateutil.get_diff(this.to_date, this.from_date); + this.from_date = frappe.datetime.user_to_str(this.filter_inputs.from_date.val()); + this.to_date = frappe.datetime.user_to_str(this.filter_inputs.to_date.val()); + var date_diff = frappe.datetime.get_diff(this.to_date, this.from_date); me.column_map = {}; me.last_date = null; @@ -596,7 +596,7 @@ frappe.views.GridReport = Class.extend({ var add_column = function(date) { me.columns.push({ id: date, - name: dateutil.str_to_user(date), + name: frappe.datetime.str_to_user(date), field: date, formatter: me.currency_formatter, width: 100 @@ -606,7 +606,7 @@ frappe.views.GridReport = Class.extend({ var build_columns = function(condition) { // add column for each date range for(var i=0; i <= date_diff; i++) { - var date = dateutil.add_days(me.from_date, i); + var date = frappe.datetime.add_days(me.from_date, i); if(!condition) condition = function() { return true; } if(condition(date)) add_column(date); @@ -624,17 +624,17 @@ frappe.views.GridReport = Class.extend({ } else if(range=='Weekly') { build_columns(function(date) { if(!me.last_date) return true; - return !(dateutil.get_diff(date, me.from_date) % 7) + return !(frappe.datetime.get_diff(date, me.from_date) % 7) }); } else if(range=='Monthly') { build_columns(function(date) { if(!me.last_date) return true; - return dateutil.str_to_obj(me.last_date).getMonth() != dateutil.str_to_obj(date).getMonth() + return frappe.datetime.str_to_obj(me.last_date).getMonth() != frappe.datetime.str_to_obj(date).getMonth() }); } else if(range=='Quarterly') { build_columns(function(date) { if(!me.last_date) return true; - return dateutil.str_to_obj(date).getDate()==1 && in_list([0,3,6,9], dateutil.str_to_obj(date).getMonth()) + return frappe.datetime.str_to_obj(date).getDate()==1 && in_list([0,3,6,9], frappe.datetime.str_to_obj(date).getMonth()) }); } else if(range=='Yearly') { build_columns(function(date) { @@ -649,8 +649,8 @@ frappe.views.GridReport = Class.extend({ // set label as last date of period $.each(this.columns, function(i, col) { col.name = me.columns[i+1] - ? dateutil.str_to_user(dateutil.add_days(me.columns[i+1].id, -1)) - : dateutil.str_to_user(me.to_date); + ? frappe.datetime.str_to_user(frappe.datetime.add_days(me.columns[i+1].id, -1)) + : frappe.datetime.str_to_user(me.to_date); }); }, trigger_refresh_on_change: function(filters) { @@ -815,7 +815,7 @@ frappe.views.TreeGridReport = frappe.views.GridReportWithPlot.extend({ if(group_ids.indexOf(item.name)==-1) { item_group_map[parent].push(item); } else { - msgprint(__("Ignoring Item {0}, because a group exists with the same name!", [item.name.bold()])); + frappe.msgprint(__("Ignoring Item {0}, because a group exists with the same name!", [item.name.bold()])); } }); @@ -844,7 +844,7 @@ frappe.views.TreeGridReport = frappe.views.GridReportWithPlot.extend({ }, export: function() { - var msgbox = msgprint($.format('

{0}

\ + var msgbox = frappe.msgprint($.format('

{0}

\

{1}

\

{2}

\

', [ diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 5277aaef15..3b236bd3f7 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -33,10 +33,10 @@ frappe.views.QueryReport = Class.extend({ }, slickgrid_options: { enableColumnReorder: false, - showHeaderRow: true, - headerRowHeight: 30, - explicitInitialization: true, - multiColumnSort: true + showHeaderRow: true, + headerRowHeight: 30, + explicitInitialization: true, + multiColumnSort: true }, make: function() { var me = this; @@ -69,7 +69,7 @@ frappe.views.QueryReport = Class.extend({ // Edit this.page.add_menu_item(__('Edit'), function() { if(!frappe.user.is_report_manager()) { - msgprint(__("You are not allowed to create / edit reports")); + frappe.msgprint(__("You are not allowed to create / edit reports")); return false; } frappe.set_route("Form", "Report", me.report_name); @@ -181,7 +181,7 @@ frappe.views.QueryReport = Class.extend({ }, print_report: function() { if(!frappe.model.can_print(this.report_doc.ref_doctype)) { - msgprint(__("You are not allowed to print this report")); + frappe.msgprint(__("You are not allowed to print this report")); return false; } @@ -211,7 +211,7 @@ frappe.views.QueryReport = Class.extend({ var print_css = frappe.boot.print_css; if(!frappe.model.can_print(this.report_doc.ref_doctype)) { - msgprint(__("You are not allowed to make PDF for this report")); + frappe.msgprint(__("You are not allowed to make PDF for this report")); return false; } @@ -277,13 +277,13 @@ frappe.views.QueryReport = Class.extend({ xhr.responseType = "arraybuffer"; xhr.onload = function(success) { - if (this.status === 200) { - var blob = new Blob([success.currentTarget.response], {type: "application/pdf"}); - var objectUrl = URL.createObjectURL(blob); + if (this.status === 200) { + var blob = new Blob([success.currentTarget.response], {type: "application/pdf"}); + var objectUrl = URL.createObjectURL(blob); - //Open report in a new window - window.open(objectUrl); - } + //Open report in a new window + window.open(objectUrl); + } }; xhr.send(formData); }, @@ -563,7 +563,7 @@ frappe.views.QueryReport = Class.extend({ var newrow = {}; for(var i=1, j=this.columns.length; i\ ' + msg + '

'); } else { @@ -815,12 +815,12 @@ _f.Frm.prototype.amend_doc = function() { } this.validate_form_action("Amend"); var me = this; - var fn = function(newdoc) { - newdoc.amended_from = me.docname; - if(me.fields_dict && me.fields_dict['amendment_date']) - newdoc.amendment_date = dateutil.obj_to_str(new Date()); - } - this.copy_doc(fn, 1); + var fn = function(newdoc) { + newdoc.amended_from = me.docname; + if(me.fields_dict && me.fields_dict['amendment_date']) + newdoc.amendment_date = frappe.datetime.obj_to_str(new Date()); + } + this.copy_doc(fn, 1); frappe.utils.play_sound("click"); } diff --git a/frappe/public/js/legacy/handler.js b/frappe/public/js/legacy/handler.js index 022f6ee945..61d197b23a 100644 --- a/frappe/public/js/legacy/handler.js +++ b/frappe/public/js/legacy/handler.js @@ -20,7 +20,7 @@ function $c_obj(doc, method, arg, callback, no_spinner, freeze_msg, btn) { if(arg && typeof arg!='string') arg = JSON.stringify(arg); - args = { + var args = { cmd:'runserverobj', args: arg, method: method diff --git a/frappe/public/js/legacy/layout.js b/frappe/public/js/legacy/layout.js index 627d4a521f..512208d168 100644 --- a/frappe/public/js/legacy/layout.js +++ b/frappe/public/js/legacy/layout.js @@ -89,7 +89,7 @@ function LayoutCell(layout, layoutRow, width) { if(width) { // add '%' if user has forgotten var w = width + ''; if(w.substr(w.length-2, 2) != 'px') { - if(w.substr(w.length-1, 1) != "%") {width = width + '%'}; + if(w.substr(w.length-1, 1) != "%") {width = width + '%'} } } diff --git a/frappe/public/js/legacy/print_format.js b/frappe/public/js/legacy/print_format.js index 3a28fb1428..a05fb8579f 100644 --- a/frappe/public/js/legacy/print_format.js +++ b/frappe/public/js/legacy/print_format.js @@ -34,7 +34,7 @@ _p.go = function(html) { _p.preview = function(html) { var w = window.open(); if(!w) { - msgprint(__("Please enable pop-ups")); + frappe.msgprint(__("Please enable pop-ups")); return; } w.document.write(html); @@ -113,7 +113,7 @@ $.extend(_p, { fmtname= "Standard"; } - args = { + var args = { fmtname: fmtname, onload: onload, no_letterhead: no_letterhead, @@ -121,12 +121,12 @@ $.extend(_p, { }; if(!cur_frm) { - msgprint(__("No document selected")); + frappe.msgprint(__("No document selected")); return; } if(!frappe.model.can_print(cur_frm.doctype, cur_frm)) { - msgprint(__("You are not allowed to print this document")); + frappe.msgprint(__("You are not allowed to print this document")); return; } @@ -145,7 +145,7 @@ $.extend(_p, { } else { var print_format_doc = locals["Print Format"][args.fmtname]; if(!print_format_doc) { - msgprint(__("Unknown Print Format: {0}", [args.fmtname])); + frappe.msgprint(__("Unknown Print Format: {0}", [args.fmtname])); return; } args.onload(_p.render({ @@ -220,7 +220,7 @@ $.extend(_p, { } if(args.doc && cint(args.doc.docstatus)==0 && is_doctype_submittable) { - draft = _p.head_banner_format(); + var draft = _p.head_banner_format(); draft = draft.replace("{{HEAD}}", "DRAFT"); draft = draft.replace("{{DESCRIPTION}}", "This box will go away after the document is submitted."); return draft; @@ -236,7 +236,7 @@ $.extend(_p, { */ show_archived: function(args) { if(args.doc && args.doc.__archived) { - archived = _p.head_banner_format(); + var archived = _p.head_banner_format(); archived = archived.replace("{{HEAD}}", "ARCHIVED"); archived = archived.replace("{{DESCRIPTION}}", "You must restore this document to make it editable."); return archived; @@ -252,7 +252,7 @@ $.extend(_p, { */ show_cancelled: function(args) { if(args.doc && args.doc.docstatus==2) { - cancelled = _p.head_banner_format(); + var cancelled = _p.head_banner_format(); cancelled = cancelled.replace("{{HEAD}}", "CANCELLED"); cancelled = cancelled.replace("{{DESCRIPTION}}", "You must amend this document to make it editable."); return cancelled; @@ -267,7 +267,7 @@ $.extend(_p, { var body_style = ''; var style_list = container.getElementsByTagName('style'); while(style_list && style_list.length>0) { - for(i in style_list) { + for(var i in style_list) { if(style_list[i] && style_list[i].innerHTML) { body_style += style_list[i].innerHTML; var parent = style_list[i].parentNode; @@ -282,7 +282,7 @@ $.extend(_p, { } // Concatenate all styles - style_concat = (args.only_body ? '' : _p.def_print_style_body) + var style_concat = (args.only_body ? '' : _p.def_print_style_body) + _p.def_print_style_other + args.style + body_style; return style_concat; @@ -609,7 +609,7 @@ $.extend(_p, { return html; }, - add_layout: function(doctype) { + add_layout: function(doctype) {v var layout = new Layout(); layout.addrow(); @@ -625,7 +625,7 @@ $.extend(_p, { // If only one table is passed layout.cur_cell.appendChild(t); } else { - page_break = '\n\ + var page_break = '\n\
'; @@ -662,7 +662,7 @@ $.extend(_p, { // If value or a numeric type then proceed // Add field table - row = _p.field_tab(layout.cur_cell); + var row = _p.field_tab(layout.cur_cell); // Add label row.cells[0].innerHTML = __(f.label ? f.label : f.fieldname); diff --git a/frappe/public/js/legacy/print_table.js b/frappe/public/js/legacy/print_table.js index d6d7d0578c..64072e6fd7 100644 --- a/frappe/public/js/legacy/print_table.js +++ b/frappe/public/js/legacy/print_table.js @@ -141,7 +141,7 @@ frappe.printTable = Class.extend({ // get from doctype and redistribute to fit 100% if(!this.widths) { this.widths = $.map(this.columns, function(fieldname, ci) { - df = frappe.meta.docfield_map[me.tabletype][fieldname]; + var df = frappe.meta.docfield_map[me.tabletype][fieldname]; return df && df.print_width || (fieldname=="Sr" ? 30 : 80); }); diff --git a/frappe/templates/includes/contact.js b/frappe/templates/includes/contact.js index 869b4dce60..0937e653b6 100644 --- a/frappe/templates/includes/contact.js +++ b/frappe/templates/includes/contact.js @@ -8,13 +8,13 @@ frappe.ready(function() { var message = $('[name="message"]').val(); if(!(email && message)) { - msgprint(__("Please enter both your email and message so that we \ + frappe.msgprint(__("Please enter both your email and message so that we \ can get back to you. Thanks!")); return false; } - if(!valid_email(email)) { - msgprint(__("You seem to have written your name instead of your email. \ + if(!validate_email(email)) { + frappe.msgprint(__("You seem to have written your name instead of your email. \ Please enter a valid email address so that we can get back.")); $('[name="email"]').focus(); return false; @@ -27,9 +27,9 @@ frappe.ready(function() { message: message, callback: function(r) { if(r.message==="okay") { - msgprint(__("Thank you for your message")); + frappe.msgprint(__("Thank you for your message")); } else { - msgprint(__("There were errors")); + frappe.msgprint(__("There were errors")); console.log(r.exc); } $(':input').val(''); diff --git a/frappe/website/doctype/website_settings/website_settings.js b/frappe/website/doctype/website_settings/website_settings.js index cf8d9497f3..5200a8aaf4 100644 --- a/frappe/website/doctype/website_settings/website_settings.js +++ b/frappe/website/doctype/website_settings/website_settings.js @@ -14,7 +14,7 @@ // doctype:"Website Settings" // }, // callback: function(r) { -// if(!r.exc) { msgprint(__("Exported")); } +// if(!r.exc) { frappe.msgprint(__("Exported")); } // } // }) // }) @@ -81,7 +81,7 @@ $.extend(cur_frm.cscript, { cur_frm.cscript.set_banner_from_image = function(doc) { if(!doc.banner_image) { - msgprint(__("Select a Brand Image first.")); + frappe.msgprint(__("Select a Brand Image first.")); } var src = doc.banner_image; cur_frm.set_value("brand_html", "') - s.show(); - frappe.call({ - method: 'frappe.core.doctype.user.user.set_email_password', - args: { - "email_account": email_account[i]["email_account"], - "user": user, - "password": d.get_value("password") - }, - callback: function (passed) + }); + s.fields_dict.checking.$wrapper.html('') + s.show(); + frappe.call({ + method: 'frappe.core.doctype.user.user.set_email_password', + args: { + "email_account": email_account[i]["email_account"], + "user": user, + "password": d.get_value("password") + }, + callback: function (passed) + { + s.hide(); + d.hide();//hide waiting indication + if (!passed["message"]) + { + frappe.show_alert("Login Failed please try again", 5); + me.email_password_prompt(email_account, user, i) + } + else { - s.hide(); - d.hide();//hide waiting indication - if (!passed["message"]) + if (i + 1 < email_account.length) { - frappe.show_alert("Login Failed please try again", 5); + i = i + 1; me.email_password_prompt(email_account, user, i) } - else - { - if (i + 1 < email_account.length) - { - i = i + 1; - me.email_password_prompt(email_account, user, i) - } - } - } - }); + + } }); - d.show(); + }); + d.show(); }, load_bootinfo: function() { if(frappe.boot) { @@ -555,20 +555,19 @@ frappe.get_desktop_icons = function(show_hidden, show_global) { for (var i=0, l=frappe.boot.desktop_icons.length; i < l; i++) { var m = frappe.boot.desktop_icons[i]; - if ((['Setup', 'Core'].indexOf(m.module_name) === -1) - && show_module(m)) { - add_to_out(m) + if ((['Setup', 'Core'].indexOf(m.module_name) === -1) && show_module(m)) { + add_to_out(m); } } if(frappe.user_roles.includes('System Manager')) { var m = frappe.get_module('Setup'); - if(show_module(m)) add_to_out(m) + if(show_module(m)) add_to_out(m); } if(frappe.user_roles.includes('Administrator')) { var m = frappe.get_module('Core'); - if(show_module(m)) add_to_out(m) + if(show_module(m)) add_to_out(m); } return out; diff --git a/frappe/public/js/frappe/form/control.js b/frappe/public/js/frappe/form/control.js index 3a9af71a8f..7d79bfb130 100755 --- a/frappe/public/js/frappe/form/control.js +++ b/frappe/public/js/frappe/form/control.js @@ -18,7 +18,7 @@ frappe.ui.form.Control = Class.extend({ // if developer_mode=1, show fieldname as tooltip if(frappe.boot.user && frappe.boot.user.name==="Administrator" && frappe.boot.developer_mode===1 && this.$wrapper) { - this.$wrapper.attr("title", __(this.df.fieldname)); + this.$wrapper.attr("title", __(this.df.fieldname)); } if(this.render_input) { @@ -75,8 +75,9 @@ frappe.ui.form.Control = Class.extend({ if (this.doctype && status==="Read" && !this.only_input && is_null(frappe.model.get_value(this.doctype, this.docname, this.df.fieldname)) && !in_list(["HTML", "Image"], this.df.fieldtype)) { - if(explain) console.log("By Hide Read-only, null fields: None"); - status = "None"; + + if(explain) console.log("By Hide Read-only, null fields: None"); + status = "None"; } return status; @@ -189,19 +190,19 @@ frappe.ui.form.ControlImage = frappe.ui.form.Control.extend({ this.$body = $("
").appendTo(this.$wrapper) .css({"margin-bottom": "10px"}) this.$wrapper.on("refresh", function() { - var doc = null; - me.$body.empty(); + var doc = null; + me.$body.empty(); - var doc = me.get_doc(); - if(doc && me.df.options && doc[me.df.options]) { - me.$img = $("") - .appendTo(me.$body); - } else { - me.$buffer = $("
") - .appendTo(me.$body) - } - return false; - }); + var doc = me.get_doc(); + if(doc && me.df.options && doc[me.df.options]) { + me.$img = $("") + .appendTo(me.$body); + } else { + me.$buffer = $("
") + .appendTo(me.$body) + } + return false; + }); $('
').appendTo(this.$wrapper); } }); @@ -430,7 +431,7 @@ frappe.ui.form.ControlData = frappe.ui.form.ControlInput.extend({ if (in_list(['Data', 'Link', 'Dynamic Link', 'Password', 'Select', 'Read Only', 'Attach', 'Attach Image'], this.df.fieldtype)) { - this.$input.attr("maxlength", this.df.length || 140); + this.$input.attr("maxlength", this.df.length || 140); } this.set_input_attributes(); @@ -1938,7 +1939,7 @@ frappe.ui.form.ControlSignature = frappe.ui.form.ControlData.extend({ this.set_editable(this.get_status()=="Write"); this.load_pad(); if(this.get_status()=="Read") { - $(this.disp_area).toggle(false); + $(this.disp_area).toggle(false); } }, set_image: function(value) { @@ -1976,15 +1977,15 @@ frappe.ui.form.ControlSignature = frappe.ui.form.ControlData.extend({ } }, set_editable: function(editable) { - this.$pad.toggle(editable); - this.img_wrapper.toggle(!editable); - this.$btnWrapper.toggle(editable); - if (editable) { - this.$btnWrapper.addClass('editing'); - } - else { - this.$btnWrapper.removeClass('editing'); - } + this.$pad.toggle(editable); + this.img_wrapper.toggle(!editable); + this.$btnWrapper.toggle(editable); + if (editable) { + this.$btnWrapper.addClass('editing'); + } + else { + this.$btnWrapper.removeClass('editing'); + } }, set_my_value: function(value) { if (this.saving || this.loading) return; diff --git a/frappe/public/js/frappe/form/footer/timeline.js b/frappe/public/js/frappe/form/footer/timeline.js index afecc8299d..7eb1ecf120 100644 --- a/frappe/public/js/frappe/form/footer/timeline.js +++ b/frappe/public/js/frappe/form/footer/timeline.js @@ -116,13 +116,13 @@ frappe.ui.form.Timeline = Class.extend({ var communications = this.get_communications(true); - $.each(communications.sort(function(a, b) { return a.creation > b.creation ? -1 : 1 }), - function(i, c) { - if(c.content) { - c.frm = me.frm; - me.render_timeline_item(c); - } - }); + communications + .sort((a, b) => a.creation > b.creation ? -1 : 1) + .filter(c => c.content) + .forEach(c => { + c.frm = me.frm; + me.render_timeline_item(c); + }); // more btn if (this.more===undefined && communications.length===20) { diff --git a/frappe/public/js/frappe/form/footer/timeline_item.html b/frappe/public/js/frappe/form/footer/timeline_item.html index 639b2f7047..214a18e33b 100755 --- a/frappe/public/js/frappe/form/footer/timeline_item.html +++ b/frappe/public/js/frappe/form/footer/timeline_item.html @@ -41,7 +41,7 @@
– {%= data.comment_on %} - {% if(inList(["Communication", "Feedback"], data.communication_type)) { %} + {% if(in_list(["Communication", "Feedback"], data.communication_type)) { %} {% if (frappe.model.can_read(\'Communication\')) { %} diff --git a/frappe/public/js/frappe/form/grid.js b/frappe/public/js/frappe/form/grid.js index 1debb8a98c..2b6f05ae7d 100644 --- a/frappe/public/js/frappe/form/grid.js +++ b/frappe/public/js/frappe/form/grid.js @@ -31,7 +31,7 @@ frappe.ui.form.Grid = Class.extend({ this.multiple_set = false; if(this.frm && this.frm.meta.__form_grid_templates && this.frm.meta.__form_grid_templates[this.df.fieldname]) { - this.template = this.frm.meta.__form_grid_templates[this.df.fieldname]; + this.template = this.frm.meta.__form_grid_templates[this.df.fieldname]; } this.is_grid = true; @@ -428,27 +428,25 @@ frappe.ui.form.Grid = Class.extend({ && (this.editable_fields || df.in_list_view) && (this.frm && this.frm.get_perm(df.permlevel, "read") || !this.frm) && !in_list(frappe.model.layout_fields, df.fieldtype)) { - if(df.columns) { - df.colsize=df.columns; - } - else { - var colsize=2; - switch(df.fieldtype){ - case"Text": - case"Small Text": - colsize=3; - break; - case"Check": - colsize=1 - } - df.colsize=colsize - } - total_colsize += df.colsize - if(total_colsize > 11) - return false; - this.visible_columns.push([df, df.colsize]); + if(df.columns) { + df.colsize=df.columns; + } + else { + var colsize = 2; + switch(df.fieldtype) { + case "Text": + case "Small Text": colsize = 3; break; + case"Check": colsize = 1 + } + df.colsize = colsize } + + total_colsize += df.colsize + if(total_colsize > 11) + return false; + this.visible_columns.push([df, df.colsize]); + } } // redistribute if total-col size is less than 12 @@ -943,15 +941,15 @@ frappe.ui.form.GridRow = Class.extend({ field.get_query = this.grid.get_field(df.fieldname).get_query; field.refresh(); if(field.$input) { - field.$input.addClass('input-sm'); field.$input + .addClass('input-sm') .attr('data-col-idx', column.column_index) .attr('placeholder', __(df.label)); - // flag list input - if (this.columns_list && this.columns_list.slice(-1)[0]===column) { - field.$input.attr('data-last-input', 1); - } + // flag list input + if (this.columns_list && this.columns_list.slice(-1)[0]===column) { + field.$input.attr('data-last-input', 1); + } } this.set_arrow_keys(field); diff --git a/frappe/public/js/frappe/form/layout.js b/frappe/public/js/frappe/form/layout.js index fe92dae364..d44ecdaa7b 100644 --- a/frappe/public/js/frappe/form/layout.js +++ b/frappe/public/js/frappe/form/layout.js @@ -54,18 +54,14 @@ frappe.ui.form.Layout = Class.extend({ this.make_section(); } $.each(this.fields, function(i, df) { - switch(df.fieldtype) { - case "Fold": - me.make_page(df); - break; - case "Section Break": - me.make_section(df); - break; - case "Column Break": - me.make_column(df); - break; - default: - me.make_field(df); + if(df.fieldtype === "Fold") { + me.make_page(df); + } else if (df.fieldtype === "Section Break") { + me.make_section(df); + } else if (df.fieldtype === "Column Break") { + me.make_column(df); + } else { + me.make_field(df); } }); diff --git a/frappe/public/js/frappe/form/link_selector.js b/frappe/public/js/frappe/form/link_selector.js index 6702597776..5737e132de 100644 --- a/frappe/public/js/frappe/form/link_selector.js +++ b/frappe/public/js/frappe/form/link_selector.js @@ -2,24 +2,24 @@ // MIT License. See license.txt frappe.ui.form.LinkSelector = Class.extend({ - init: function(opts) { + init: function (opts) { /* help: Options: doctype, get_query, target */ $.extend(this, opts); var me = this; - if(this.doctype!="[Select]") { - frappe.model.with_doctype(this.doctype, function(r) { + if (this.doctype != "[Select]") { + frappe.model.with_doctype(this.doctype, function (r) { me.make(); }); } else { this.make(); } }, - make: function() { + make: function () { var me = this; this.dialog = new frappe.ui.Dialog({ - title: __("Select {0}", [(this.doctype=='[Select]') ? __("value") : __(this.doctype)]), + title: __("Select {0}", [(this.doctype == '[Select]') ? __("value") : __(this.doctype)]), fields: [ { fieldtype: "Data", fieldname: "txt", label: __("Beginning with"), @@ -30,45 +30,45 @@ frappe.ui.form.LinkSelector = Class.extend({ } ], primary_action_label: __("Search"), - primary_action: function() { + primary_action: function () { me.search(); } }); - if(this.txt) + if (this.txt) this.dialog.fields_dict.txt.set_input(this.txt); - this.dialog.get_input("txt").on("keypress", function(e) { - if(e.which===13) { + this.dialog.get_input("txt").on("keypress", function (e) { + if (e.which === 13) { me.search(); } }); this.dialog.show(); this.search(); }, - search: function() { + search: function () { var args = { - txt: this.dialog.fields_dict.txt.get_value(), - searchfield: "name" - }, - me = this; + txt: this.dialog.fields_dict.txt.get_value(), + searchfield: "name" + }; + var me = this; - if(this.target.set_custom_query) { + if (this.target.set_custom_query) { this.target.set_custom_query(args); } // load custom query from grid - if(this.target.is_grid && this.target.fieldinfo[this.fieldname] + if (this.target.is_grid && this.target.fieldinfo[this.fieldname] && this.target.fieldinfo[this.fieldname].get_query) { $.extend(args, - this.target.fieldinfo[this.fieldname].get_query(cur_frm.doc)); + this.target.fieldinfo[this.fieldname].get_query(cur_frm.doc)); } - frappe.link_search(this.doctype, args, function(r) { + frappe.link_search(this.doctype, args, function (r) { var parent = me.dialog.fields_dict.results.$wrapper; parent.empty(); - if(r.values.length) { - $.each(r.values, function(i, v) { + if (r.values.length) { + $.each(r.values, function (i, v) { var row = $(repl('' + html); }, no_letterhead: !this.with_letterhead(), @@ -173,55 +175,55 @@ frappe.ui.form.PrintPreview = Class.extend({ no_heading: true }); }, - refresh_print_options: function() { + refresh_print_options: function () { this.print_formats = frappe.meta.get_print_formats(this.frm.doctype); return this.print_sel .empty().add_options(this.print_formats); }, - with_old_style: function(opts) { - frappe.require("/assets/js/print_format_v3.min.js", function() { + with_old_style: function (opts) { + frappe.require("/assets/js/print_format_v3.min.js", function () { _p.build(opts.format, opts.callback, opts.no_letterhead, opts.only_body, opts.no_heading); }); }, - print_old_style: function() { + print_old_style: function () { var me = this; - frappe.require("/assets/js/print_format_v3.min.js", function() { + frappe.require("/assets/js/print_format_v3.min.js", function () { _p.build(me.print_sel.val(), _p.go, !me.with_letterhead()); }); }, - new_page_preview_old_style: function() { + new_page_preview_old_style: function () { var me = this; - frappe.require("/assets/js/print_format_v3.min.js", function() { + frappe.require("/assets/js/print_format_v3.min.js", function () { _p.build(me.print_sel.val(), _p.preview, !me.with_letterhead()); }); }, - selected_format: function() { + selected_format: function () { return this.print_sel.val() || this.frm.meta.default_print_format || "Standard"; }, - is_old_style: function(format) { - return this.get_print_format(format).print_format_type==="Client"; + is_old_style: function (format) { + return this.get_print_format(format).print_format_type === "Client"; }, - get_print_format: function(format) { + get_print_format: function (format) { if (!format) { format = this.selected_format(); } - if(locals["Print Format"] && locals["Print Format"][format]) { + if (locals["Print Format"] && locals["Print Format"][format]) { return locals["Print Format"][format] } else { return {} } }, - with_letterhead: function() { + with_letterhead: function () { return this.print_letterhead.is(":checked") ? 1 : 0; }, - set_style: function(style) { + set_style: function (style) { frappe.dom.set_style(style || frappe.boot.print_css, "print-style"); } }); -frappe.ui.get_print_settings = function(pdf, callback, letter_head) { +frappe.ui.get_print_settings = function (pdf, callback, letter_head) { var print_settings = locals[":Print Settings"]["Print Settings"]; var default_letter_head = locals[":Company"] && frappe.defaults.get_default('company') @@ -232,16 +234,16 @@ frappe.ui.get_print_settings = function(pdf, callback, letter_head) { fieldtype: "Check", fieldname: "with_letter_head", label: __("With Letter head") - },{ + }, { fieldtype: "Select", fieldname: "letter_head", label: __("Letter Head"), depends_on: "with_letter_head", - options: $.map(frappe.boot.letter_heads, function(i,d){ return d }), + options: $.map(frappe.boot.letter_heads, function (i, d) { return d }), default: letter_head || default_letter_head }]; - if(pdf) { + if (pdf) { columns.push({ fieldtype: "Select", fieldname: "orientation", @@ -251,12 +253,12 @@ frappe.ui.get_print_settings = function(pdf, callback, letter_head) { }) } - frappe.prompt(columns, function(data) { + frappe.prompt(columns, function (data) { var data = $.extend(print_settings, data); - if(!data.with_letter_head) { + if (!data.with_letter_head) { data.letter_head = null; } - if(data.letter_head) { + if (data.letter_head) { data.letter_head = frappe.boot.letter_heads[print_settings.letter_head]; } callback(data); diff --git a/frappe/public/js/frappe/form/save.js b/frappe/public/js/frappe/form/save.js index d0890cbd3a..0c00ab3876 100644 --- a/frappe/public/js/frappe/form/save.js +++ b/frappe/public/js/frappe/form/save.js @@ -3,7 +3,7 @@ frappe.provide("frappe.ui.form"); -frappe.ui.form.save = function(frm, action, callback, btn) { +frappe.ui.form.save = function (frm, action, callback, btn) { $(btn).prop("disabled", true); // specified here because there are keyboard shortcuts to save @@ -17,14 +17,14 @@ frappe.ui.form.save = function(frm, action, callback, btn) { var freeze_message = working_label ? __(working_label) : ""; - var save = function() { - check_name(function() { + var save = function () { + check_name(function () { $(frm.wrapper).addClass('validated-form'); - if(check_mandatory()) { + if (check_mandatory()) { _call({ method: "frappe.desk.form.save.savedocs", - args: { doc: frm.doc, action:action}, - callback: function(r) { + args: { doc: frm.doc, action: action }, + callback: function (r) { $(document).trigger("save", [frm.doc]); callback(r); }, @@ -38,7 +38,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) { }; - var cancel = function() { + var cancel = function () { var args = { doctype: frm.doc.doctype, name: frm.doc.name @@ -46,7 +46,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) { // update workflow state value if workflow exists var workflow_state_fieldname = frappe.workflow.get_state_fieldname(frm.doctype); - if(workflow_state_fieldname) { + if (workflow_state_fieldname) { $.extend(args, { workflow_state_fieldname: workflow_state_fieldname, workflow_state: frm.doc[workflow_state_fieldname] @@ -57,7 +57,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) { _call({ method: "frappe.desk.form.save.cancel", args: args, - callback: function(r) { + callback: function (r) { $(document).trigger("save", [frm.doc]); callback(r); }, @@ -66,14 +66,14 @@ frappe.ui.form.save = function(frm, action, callback, btn) { }); }; - var check_name = function(callback) { + var check_name = function (callback) { var doc = frm.doc; var meta = locals.DocType[doc.doctype]; - if(doc.__islocal && (meta && meta.autoname - && meta.autoname.toLowerCase()=='prompt')) { - var d = frappe.prompt(__("Name"), function(values) { + if (doc.__islocal && (meta && meta.autoname + && meta.autoname.toLowerCase() == 'prompt')) { + var d = frappe.prompt(__("Name"), function (values) { var newname = values.value; - if(newname) { + if (newname) { doc.__newname = strip(newname); } else { frappe.msgprint(__("Name is required")); @@ -84,11 +84,11 @@ frappe.ui.form.save = function(frm, action, callback, btn) { }, __('Enter the name of the new {0}', [doc.doctype]), __("Create")); - if(doc.__newname) { + if (doc.__newname) { d.set_value("value", doc.__newname); } - d.onhide = function() { + d.onhide = function () { $(btn).prop("disabled", false); } } else { @@ -96,36 +96,36 @@ frappe.ui.form.save = function(frm, action, callback, btn) { } }; - var check_mandatory = function() { + var check_mandatory = function () { var me = this; var has_errors = false; frm.scroll_set = false; - if(frm.doc.docstatus==2) return true; // don't check for cancel + if (frm.doc.docstatus == 2) return true; // don't check for cancel - $.each(frappe.model.get_all_docs(frm.doc), function(i, doc) { + $.each(frappe.model.get_all_docs(frm.doc), function (i, doc) { var error_fields = []; var folded = false; - $.each(frappe.meta.docfield_list[doc.doctype] || [], function(i, docfield) { - if(docfield.fieldname) { + $.each(frappe.meta.docfield_list[doc.doctype] || [], function (i, docfield) { + if (docfield.fieldname) { var df = frappe.meta.get_docfield(doc.doctype, docfield.fieldname, frm.doc.name); - if(df.fieldtype==="Fold") { + if (df.fieldtype === "Fold") { folded = frm.layout.folded; } - if(df.reqd && !frappe.model.has_value(doc.doctype, doc.name, df.fieldname)) { + if (df.reqd && !frappe.model.has_value(doc.doctype, doc.name, df.fieldname)) { has_errors = true; error_fields[error_fields.length] = __(df.label); // scroll to field - if(!me.scroll_set) { + if (!me.scroll_set) { scroll_to(doc.parentfield || df.fieldname); } - if(folded) { + if (folded) { frm.layout.unfold(); folded = false; } @@ -133,8 +133,8 @@ frappe.ui.form.save = function(frm, action, callback, btn) { } }); - if(error_fields.length) { - if(doc.parenttype) { + if (error_fields.length) { + if (doc.parenttype) { var message = __('Mandatory fields required in table {0}, Row {1}', [__(frappe.meta.docfield_map[doc.parenttype][doc.parentfield].label).bold(), doc.idx]); } else { @@ -153,15 +153,15 @@ frappe.ui.form.save = function(frm, action, callback, btn) { return !has_errors; }; - var scroll_to = function(fieldname) { + var scroll_to = function (fieldname) { var f = cur_frm.fields_dict[fieldname]; - if(f) { + if (f) { $(document).scrollTop($(f.wrapper).offset().top - 60); } frm.scroll_set = true; }; - var _call = function(opts) { + var _call = function (opts) { // opts = { // method: "some server method", // args: {args to be passed}, @@ -170,7 +170,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) { // } $(opts.btn).prop("disabled", true); - if(frappe.ui.form.is_saving) { + if (frappe.ui.form.is_saving) { // this is likely to happen if the user presses the shortcut cmd+s for a longer duration or uses double click // no need to show this to user, as they can see "Saving" in freeze message console.log("Already saving. Please wait a few moments.") @@ -184,38 +184,39 @@ frappe.ui.form.save = function(frm, action, callback, btn) { method: opts.method, args: opts.args, btn: opts.btn, - callback: function(r) { + callback: function (r) { opts.callback && opts.callback(r); }, - always: function(r) { + always: function (r) { frappe.ui.form.is_saving = false; - if(r) { + if (r) { var doc = r.docs && r.docs[0]; - if(doc) { + if (doc) { frappe.ui.form.update_calling_link(doc); - } + } } } }) }; - if(action==="cancel") { + if (action === "cancel") { cancel(); } else { save(); } } -frappe.ui.form.update_calling_link = function(newdoc) { - if(frappe._from_link && newdoc.doctype===frappe._from_link.df.options) { +frappe.ui.form.update_calling_link = function (newdoc) { + if (frappe._from_link && newdoc.doctype === frappe._from_link.df.options) { var doc = frappe.get_doc(frappe._from_link.doctype, frappe._from_link.docname); // set value - if (doc && doc.parentfield){ + if (doc && doc.parentfield) { //update values for child table - $.each(frappe._from_link.frm.fields_dict[doc.parentfield].grid.grid_rows, function(index, field) { - if(field.doc && field.doc.name===frappe._from_link.docname){ + $.each(frappe._from_link.frm.fields_dict[doc.parentfield].grid.grid_rows, function (index, field) { + if (field.doc && field.doc.name === frappe._from_link.docname) { frappe._from_link.set_value(newdoc.name); - }}); + } + }); } else { frappe._from_link.set_value(newdoc.name); } @@ -224,9 +225,9 @@ frappe.ui.form.update_calling_link = function(newdoc) { frappe._from_link.refresh(); // if from form, switch - if(frappe._from_link.frm) { + if (frappe._from_link.frm) { frappe.set_route("Form", frappe._from_link.frm.doctype, frappe._from_link.frm.docname); - setTimeout(function() { frappe.utils.scroll_to(frappe._from_link_scrollY); }, 100); + setTimeout(function () { frappe.utils.scroll_to(frappe._from_link_scrollY); }, 100); } frappe._from_link = null; diff --git a/frappe/public/js/frappe/form/script_manager.js b/frappe/public/js/frappe/form/script_manager.js index 56b6d00948..1591f0a3bb 100644 --- a/frappe/public/js/frappe/form/script_manager.js +++ b/frappe/public/js/frappe/form/script_manager.js @@ -114,8 +114,8 @@ frappe.ui.form.ScriptManager = Class.extend({ } function setup_add_fetch(df) { - if((in_list(['Data', 'Read Only', 'Text', 'Small Text', - 'Text Editor', 'Code'], df.fieldtype) || df.read_only==1) + if((['Data', 'Read Only', 'Text', 'Small Text', + 'Text Editor', 'Code'].includes(df.fieldtype) || df.read_only==1) && df.options && df.options.indexOf(".")!=-1) { var parts = df.options.split("."); me.frm.add_fetch(parts[0], parts[1], df.fieldname); diff --git a/frappe/public/js/frappe/form/share.js b/frappe/public/js/frappe/form/share.js index c241d8783e..828ea69ede 100644 --- a/frappe/public/js/frappe/form/share.js +++ b/frappe/public/js/frappe/form/share.js @@ -163,8 +163,8 @@ frappe.ui.form.Share = Class.extend({ $(d.body).find(".edit-share").on("click", function() { var user = $(this).parents(".shared-user:first").attr("data-user") || "", value = $(this).prop("checked") ? 1 : 0, - property = $(this).attr("name") - var everyone = cint($(this).parents(".shared-user:first").attr("data-everyone")); + property = $(this).attr("name"), + everyone = cint($(this).parents(".shared-user:first").attr("data-everyone")); frappe.call({ method: "frappe.share.set_permission", diff --git a/frappe/public/js/frappe/form/sidebar.js b/frappe/public/js/frappe/form/sidebar.js index ea3f1737bb..6da3c6f8d8 100644 --- a/frappe/public/js/frappe/form/sidebar.js +++ b/frappe/public/js/frappe/form/sidebar.js @@ -58,10 +58,10 @@ frappe.ui.form.Sidebar = Class.extend({ this.frm.tags && this.frm.tags.refresh(this.frm.doc._user_tags); this.sidebar.find(".modified-by").html(__("{0} edited this {1}", ["" + frappe.user.full_name(this.frm.doc.modified_by) + "", - "
" + comment_when(this.frm.doc.modified)])); + "
" + comment_when(this.frm.doc.modified)])); this.sidebar.find(".created-by").html(__("{0} created this {1}", ["" + frappe.user.full_name(this.frm.doc.owner) + "", - "
" + comment_when(this.frm.doc.creation)])); + "
" + comment_when(this.frm.doc.creation)])); this.refresh_like(); this.setup_ratings(); diff --git a/frappe/public/js/frappe/misc/pretty_date.js b/frappe/public/js/frappe/misc/pretty_date.js index 427752b0bc..faeb22f01b 100644 --- a/frappe/public/js/frappe/misc/pretty_date.js +++ b/frappe/public/js/frappe/misc/pretty_date.js @@ -1,28 +1,28 @@ // moment strings for translation -function prettyDate(time, mini){ - if(!time) { +function prettyDate(time, mini) { + if (!time) { time = new Date(); } - if(moment) { - if(frappe.sys_defaults && frappe.sys_defaults.time_zone) { + if (moment) { + if (frappe.sys_defaults && frappe.sys_defaults.time_zone) { var ret = moment.tz(time, frappe.sys_defaults.time_zone).locale(frappe.boot.lang).fromNow(mini); } else { var ret = moment(time).locale(frappe.boot.lang).fromNow(mini); } - if(mini) { - if(ret === moment().locale(frappe.boot.lang).fromNow(mini)) { + if (mini) { + if (ret === moment().locale(frappe.boot.lang).fromNow(mini)) { ret = __("now"); } else { var parts = ret.split(" "); - if(parts.length > 1) { - if(parts[0]==="a" || parts[0]==="an") { + if (parts.length > 1) { + if (parts[0] === "a" || parts[0] === "an") { parts[0] = 1; } - if(parts[1].substr(0, 2)==="mo"){ + if (parts[1].substr(0, 2) === "mo") { ret = parts[0] + " M"; } else { - ret = parts[0] + " " + parts[1].substr(0, 1); + ret = parts[0] + " " + parts[1].substr(0, 1); } } } @@ -30,50 +30,50 @@ function prettyDate(time, mini){ } return ret; } else { - if(!time) return '' + if (!time) return '' var date = time; - if(typeof(time)=="string") - date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ").replace(/\.[0-9]*/, "")); + if (typeof (time) == "string") + date = new Date((time || "").replace(/-/g, "/").replace(/[TZ]/g, " ").replace(/\.[0-9]*/, "")); var diff = (((new Date()).getTime() - date.getTime()) / 1000), - day_diff = Math.floor(diff / 86400); + day_diff = Math.floor(diff / 86400); - if ( isNaN(day_diff) || day_diff < 0 ) + if (isNaN(day_diff) || day_diff < 0) return ''; var when = day_diff == 0 && ( - diff < 60 && __("just now") || - diff < 120 && __("1 minute ago") || - diff < 3600 && __("{0} minutes ago", [Math.floor( diff / 60 )]) || - diff < 7200 && __("1 hour ago") || - diff < 86400 && ("{0} hours ago", [Math.floor( diff / 3600 )])) || + diff < 60 && __("just now") || + diff < 120 && __("1 minute ago") || + diff < 3600 && __("{0} minutes ago", [Math.floor(diff / 60)]) || + diff < 7200 && __("1 hour ago") || + diff < 86400 && ("{0} hours ago", [Math.floor(diff / 3600)])) || day_diff == 1 && __("Yesterday") || day_diff < 7 && __("{0} days ago", day_diff) || - day_diff < 31 && __("{0} weeks ago", [Math.ceil( day_diff / 7 )]) || - day_diff < 365 && __("{0} months ago", [Math.ceil( day_diff / 30)]) || - __("> {0} year(s) ago", [Math.floor( day_diff / 365 )]); + day_diff < 31 && __("{0} weeks ago", [Math.ceil(day_diff / 7)]) || + day_diff < 365 && __("{0} months ago", [Math.ceil(day_diff / 30)]) || + __("> {0} year(s) ago", [Math.floor(day_diff / 365)]); return when; } } -var comment_when = function(datetime, mini) { +var comment_when = function (datetime, mini) { var timestamp = frappe.datetime.str_to_user ? frappe.datetime.str_to_user(datetime) : datetime; return '' + + (mini ? " mini" : "") + '" data-timestamp="' + datetime + + '" title="' + timestamp + '">' + prettyDate(datetime, mini) + ''; }; frappe.provide("frappe.datetime"); -frappe.datetime.refresh_when = function() { - if(jQuery) { - $(".frappe-timestamp").each(function() { +frappe.datetime.refresh_when = function () { + if (jQuery) { + $(".frappe-timestamp").each(function () { $(this).html(prettyDate($(this).attr("data-timestamp"), $(this).hasClass("mini"))); }); } } -setInterval(function() { frappe.datetime.refresh_when() }, 60000); // refresh every minute +setInterval(function () { frappe.datetime.refresh_when() }, 60000); // refresh every minute diff --git a/frappe/public/js/frappe/misc/user.js b/frappe/public/js/frappe/misc/user.js index 0928d4092e..9224e2756d 100644 --- a/frappe/public/js/frappe/misc/user.js +++ b/frappe/public/js/frappe/misc/user.js @@ -84,28 +84,22 @@ $.extend(frappe.user, { if(frappe.boot.user.allow_modules.indexOf(m) === -1) return null; var ret = null; - switch(type) { - case "module": - if(frappe.boot.user.allow_modules.indexOf(m)!=-1 || frappe.modules[m].is_help) - ret = m; - break; - case "page": - if(frappe.boot.allowed_pages.indexOf(frappe.modules[m].link)!=-1) - ret = m; - break; - case "list": - if(frappe.model.can_read(frappe.modules[m]._doctype)) - ret = m; - break; - case "view": + if (type === "module") { + if(frappe.boot.user.allow_modules.indexOf(m)!=-1 || frappe.modules[m].is_help) ret = m; - break; - case "setup": - if(frappe.user.has_role("System Manager") || frappe.user.has_role("Administrator")) - ret = m; - break; - default: + } else if (type === "page") { + if(frappe.boot.allowed_pages.indexOf(frappe.modules[m].link)!=-1) ret = m; + } else if (type === "list") { + if(frappe.model.can_read(frappe.modules[m]._doctype)) + ret = m; + } else if (type === "view") { + ret = m; + } else if (type === "setup") { + if(frappe.user.has_role("System Manager") || frappe.user.has_role("Administrator")) + ret = m; + } else { + ret = m; } return ret; diff --git a/frappe/public/js/frappe/misc/utils.js b/frappe/public/js/frappe/misc/utils.js index 7eb4923b87..50e3a6b102 100644 --- a/frappe/public/js/frappe/misc/utils.js +++ b/frappe/public/js/frappe/misc/utils.js @@ -587,42 +587,42 @@ frappe.utils = { // String.prototype.includes polyfill // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes if (!String.prototype.includes) { - String.prototype.includes = function(search, start) { - 'use strict'; - if (typeof start !== 'number') { - start = 0; - } - if (start + search.length > this.length) { - return false; - } else { - return this.indexOf(search, start) !== -1; - } - }; + String.prototype.includes = function (search, start) { + 'use strict'; + if (typeof start !== 'number') { + start = 0; + } + if (start + search.length > this.length) { + return false; + } else { + return this.indexOf(search, start) !== -1; + } + }; } // Array.prototype.includes polyfill // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/includes if (!Array.prototype.includes) { - Object.defineProperty(Array.prototype, 'includes', { - value: function(searchElement, fromIndex) { - if (this == null) { - throw new TypeError('"this" is null or not defined'); - } - var o = Object(this); - var len = o.length >>> 0; - if (len === 0) { - return false; - } - var n = fromIndex | 0; - var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - while (k < len) { - if (o[k] === searchElement) { - return true; + Object.defineProperty(Array.prototype, 'includes', { + value: function(searchElement, fromIndex) { + if (this == null) { + throw new TypeError('"this" is null or not defined'); + } + var o = Object(this); + var len = o.length >>> 0; + if (len === 0) { + return false; } - k++; + var n = fromIndex | 0; + var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); + while (k < len) { + if (o[k] === searchElement) { + return true; + } + k++; + } + return false; } - return false; - } - }); + }); } // Array de duplicate if (!Array.prototype.uniqBy) { diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js index efc14fa77f..0575d21f14 100644 --- a/frappe/public/js/frappe/model/create_new.js +++ b/frappe/public/js/frappe/model/create_new.js @@ -103,7 +103,8 @@ $.extend(frappe.model, { updated.push(f.fieldname); } else if(f.fieldtype == "Select" && f.options && typeof f.options === 'string' && !in_list(["[Select]", "Loading..."], f.options)) { - doc[f.fieldname] = f.options.split("\n")[0]; + + doc[f.fieldname] = f.options.split("\n")[0]; } } } @@ -252,18 +253,19 @@ $.extend(frappe.model, { // dont copy name and blank fields var df = frappe.meta.get_docfield(doc.doctype, key); - if(df && key.substr(0,2)!='__' + if (df && key.substr(0, 2) != '__' && !in_list(no_copy_list, key) - && !(df && (!from_amend && cint(df.no_copy)==1))) { - var value = doc[key] || []; - if(df.fieldtype==="Table") { - for(var i=0, j=value.length; i= 1) || (this.opts.data.rows && this.opts.data.rows.length >= 1))) { - this.chart = this.render_chart(); - this.show_chart(true); + this.chart = this.render_chart(); + this.show_chart(true); } return this.chart; diff --git a/frappe/public/js/frappe/ui/filters/filters.js b/frappe/public/js/frappe/ui/filters/filters.js index 03b62b6428..96d9483c1c 100644 --- a/frappe/public/js/frappe/ui/filters/filters.js +++ b/frappe/public/js/frappe/ui/filters/filters.js @@ -105,7 +105,7 @@ frappe.ui.FilterList = Class.extend({ // This gives a predictable stats order me.wrapper.find(".filter-stat").empty(); $.each(me.stats, function (i, v) { - me.render_filters(v, (r.message|| {})[v.name]); + me.render_filters(v, (r.message|| {})[v.name]); }); } }); @@ -353,7 +353,7 @@ frappe.ui.FilterList = Class.extend({ fieldname: fieldname, condition: condition, value: value - }); + }); this.filters.push(filter); diff --git a/frappe/public/js/frappe/ui/messages.js b/frappe/public/js/frappe/ui/messages.js index 96de5544e9..f8800eeace 100644 --- a/frappe/public/js/frappe/ui/messages.js +++ b/frappe/public/js/frappe/ui/messages.js @@ -233,8 +233,8 @@ frappe.show_progress = function(title, count, total) { }); dialog.progress = $('
') .appendTo(dialog.body); - dialog.progress_bar = dialog.progress.css({"margin-top": "10px"}) - .find(".progress-bar"); + dialog.progress_bar = dialog.progress.css({"margin-top": "10px"}) + .find(".progress-bar"); dialog.$wrapper.removeClass("fade"); dialog.show(); frappe.cur_progress = dialog; diff --git a/frappe/public/js/frappe/ui/page.js b/frappe/public/js/frappe/ui/page.js index 3b7a6939c4..f6ac7e241e 100644 --- a/frappe/public/js/frappe/ui/page.js +++ b/frappe/public/js/frappe/ui/page.js @@ -317,7 +317,7 @@ frappe.ui.Page = Class.extend({ return this.$title_area.find(".title-icon") .html(' ') .toggle(true); - }, + }, add_help_button: function(txt) { // diff --git a/frappe/public/js/frappe/ui/toolbar/search_utils.js b/frappe/public/js/frappe/ui/toolbar/search_utils.js index 91d7edb633..3b0370a2e8 100644 --- a/frappe/public/js/frappe/ui/toolbar/search_utils.js +++ b/frappe/public/js/frappe/ui/toolbar/search_utils.js @@ -136,41 +136,41 @@ frappe.search.utils = { route: route, } }; - frappe.boot.user.can_read.forEach(function(item) { - level = me.fuzzy_search(keywords, item); - if(level) { - target = item; - if(in_list(frappe.boot.single_types, item)) { - out.push(option("", ["Form", item, item], 0.05)); - - } else if(frappe.boot.user.can_search.includes(item)) { - // include 'making new' option - if(in_list(frappe.boot.user.can_create, item)) { - var match = item; - out.push({ - type: "New", - label: __("New {0}", [me.bolden_match_part(__(item), keywords)]), - value: __("New {0}", [__(item)]), - index: level + 0.01, - match: item, - onclick: function() { frappe.new_doc(match, true); } - }); - } - if(in_list(frappe.boot.treeviews, item)) { - out.push(option("Tree", ["Tree", item], 0.05)); + frappe.boot.user.can_read.forEach(function (item) { + level = me.fuzzy_search(keywords, item); + if (level) { + target = item; + if (in_list(frappe.boot.single_types, item)) { + out.push(option("", ["Form", item, item], 0.05)); + + } else if (frappe.boot.user.can_search.includes(item)) { + // include 'making new' option + if (in_list(frappe.boot.user.can_create, item)) { + var match = item; + out.push({ + type: "New", + label: __("New {0}", [me.bolden_match_part(__(item), keywords)]), + value: __("New {0}", [__(item)]), + index: level + 0.01, + match: item, + onclick: function () { frappe.new_doc(match, true); } + }); + } + if (in_list(frappe.boot.treeviews, item)) { + out.push(option("Tree", ["Tree", item], 0.05)); - } else { - out.push(option("List", ["List", item], 0.05)); - if(frappe.model.can_get_report(item)) { - out.push(option("Report", ["Report", item], 0.04)); - } - if(frappe.boot.calendars.indexOf(item) !== -1) { - out.push(option("Calendar", ["List", item, "Calendar"], 0.03)); - out.push(option("Gantt", ["List", item, "Gantt"], 0.02)); - } + } else { + out.push(option("List", ["List", item], 0.05)); + if (frappe.model.can_get_report(item)) { + out.push(option("Report", ["Report", item], 0.04)); + } + if (frappe.boot.calendars.indexOf(item) !== -1) { + out.push(option("Calendar", ["List", item, "Calendar"], 0.03)); + out.push(option("Gantt", ["List", item, "Gantt"], 0.02)); } } } + } }); return out; }, diff --git a/frappe/public/js/frappe/upload.js b/frappe/public/js/frappe/upload.js index 0b48896864..61540cd648 100644 --- a/frappe/public/js/frappe/upload.js +++ b/frappe/public/js/frappe/upload.js @@ -357,26 +357,26 @@ frappe.upload = { var filename = fileobjs[i].name; fields.push({'fieldname': 'label1', 'fieldtype': 'Heading', 'label': filename}); fields.push({'fieldname': filename+'_is_private', 'fieldtype': 'Check', 'label': 'Private', 'default': 1}); - } + } - var d = new frappe.ui.Dialog({ - 'title': __('Make file(s) private or public?'), - 'fields': fields, - primary_action: function(){ - var i =0,j = fileobjs.length; - d.hide(); - opts.loopcallback = function (){ - if (i < j) { - args.is_private = d.fields_dict[fileobjs[i].name + "_is_private"].get_value() - frappe.upload.upload_file(fileobjs[i], args, opts); - i++; - } + var d = new frappe.ui.Dialog({ + 'title': __('Make file(s) private or public?'), + 'fields': fields, + primary_action: function(){ + var i =0,j = fileobjs.length; + d.hide(); + opts.loopcallback = function (){ + if (i < j) { + args.is_private = d.fields_dict[fileobjs[i].name + "_is_private"].get_value() + frappe.upload.upload_file(fileobjs[i], args, opts); + i++; } - - opts.loopcallback(); } - }); - d.show(); - opts.confirm_is_private = 0; + + opts.loopcallback(); + } + }); + d.show(); + opts.confirm_is_private = 0; } } \ No newline at end of file diff --git a/frappe/public/js/frappe/views/calendar/calendar.js b/frappe/public/js/frappe/views/calendar/calendar.js index 3401999774..2212870480 100644 --- a/frappe/public/js/frappe/views/calendar/calendar.js +++ b/frappe/public/js/frappe/views/calendar/calendar.js @@ -325,7 +325,7 @@ frappe.views.Calendar = Class.extend({ $.each(this.filters, function(i, df) { if(df.options===value) me.page.fields_dict[df.fieldname].set_input(value); - return false; + return false; }); } }, diff --git a/frappe/public/js/frappe/views/communication.js b/frappe/public/js/frappe/views/communication.js index d6082fba94..f2475d83fd 100755 --- a/frappe/public/js/frappe/views/communication.js +++ b/frappe/public/js/frappe/views/communication.js @@ -334,7 +334,7 @@ frappe.views.CommunicationComposer = Class.extend({

\ " +__("Add Attachment")+"

").appendTo(attach.empty()) - attach.find(".add-more-attachments a").on('click',this,function() { + attach.find(".add-more-attachments a").on('click',this,function() { me.upload = frappe.ui.get_upload_dialog(args); }) me.render_attach() @@ -397,10 +397,12 @@ frappe.views.CommunicationComposer = Class.extend({ var form_values = this.get_values(); if(!form_values) return; - var selected_attachments = $.map($(me.dialog.wrapper) - .find("[data-file-name]:checked"), function(element) { + var selected_attachments = + $.map($(me.dialog.wrapper) + .find("[data-file-name]:checked"), function (element) { return $(element).attr("data-file-name"); - }) + }); + if(form_values.attach_document_print) { if (cur_frm.print_preview.is_old_style(form_values.select_print_format || "")) { @@ -496,7 +498,7 @@ frappe.views.CommunicationComposer = Class.extend({ me.dialog.hide(); if ((frappe.last_edited_communication[me.doc] || {})[me.key]) { - delete frappe.last_edited_communication[me.doc][me.key]; + delete frappe.last_edited_communication[me.doc][me.key]; } if (cur_frm) { // clear input @@ -553,11 +555,12 @@ frappe.views.CommunicationComposer = Class.extend({ }, setup_awesomplete: function() { var me = this; - [this.dialog.fields_dict.recipients.input, - this.dialog.fields_dict.cc.input] - .map(function(input) { - me.setup_awesomplete_for_input(input); - }); + [ + this.dialog.fields_dict.recipients.input, + this.dialog.fields_dict.cc.input + ].map(function(input) { + me.setup_awesomplete_for_input(input); + }); }, setup_awesomplete_for_input: function(input) { function split(val) { diff --git a/frappe/public/js/frappe/views/inbox/inbox_view.js b/frappe/public/js/frappe/views/inbox/inbox_view.js index 25cbcfafb2..a028860c73 100644 --- a/frappe/public/js/frappe/views/inbox/inbox_view.js +++ b/frappe/public/js/frappe/views/inbox/inbox_view.js @@ -2,7 +2,7 @@ * frappe.views.EmailInboxView */ - frappe.provide("frappe.views"); +frappe.provide("frappe.views"); frappe.views.InboxView = frappe.views.ListRenderer.extend({ name: 'Inbox', diff --git a/frappe/public/js/frappe/views/reports/grid_report.js b/frappe/public/js/frappe/views/reports/grid_report.js index 39f173e5bb..96a4e6182e 100644 --- a/frappe/public/js/frappe/views/reports/grid_report.js +++ b/frappe/public/js/frappe/views/reports/grid_report.js @@ -577,9 +577,9 @@ frappe.views.GridReport = Class.extend({ get_link_open_icon: function(doctype, name) { return repl(' \ ', { - doctype: doctype, - name: encodeURIComponent(name) - }); + doctype: doctype, + name: encodeURIComponent(name) + }); }, make_date_range_columns: function() { this.columns = []; @@ -640,8 +640,8 @@ frappe.views.GridReport = Class.extend({ build_columns(function(date) { if(!me.last_date) return true; return $.map(frappe.report_dump.data['Fiscal Year'], function(v) { - return date==v.year_start_date ? true : null; - }).length; + return date==v.year_start_date ? true : null; + }).length; }); } @@ -874,7 +874,7 @@ frappe.views.TreeGridReport = frappe.views.GridReportWithPlot.extend({ } return false; - }); + }); frappe.tools.downloadify(data, ["Report Manager", "System Manager"], me.title); return false; diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 3b236bd3f7..f323c91afd 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -222,14 +222,14 @@ frappe.views.QueryReport = Class.extend({ {data: frappe.slickgrid_tools.get_filtered_items(this.dataView), filters:this.get_values(), report:this}); //Render Report in HTML - var html = frappe.render_template("print_template", { - content:content, - title:__(this.report_name), - base_url: base_url, - print_css: print_css, - print_settings: this.print_settings, - landscape: landscape - }); + var html = frappe.render_template("print_template", { + content:content, + title:__(this.report_name), + base_url: base_url, + print_css: print_css, + print_settings: this.print_settings, + landscape: landscape + }); } else { // rows filtered by inline_filter of slickgrid var visible_idx = frappe.slickgrid_tools @@ -519,7 +519,7 @@ frappe.views.QueryReport = Class.extend({ col.name = col.id = col.label = df.label; return col - })); + })); }, filter_hidden_columns: function() { this.columns = $.map(this.columns, function(c, i) { diff --git a/frappe/public/js/frappe/views/reports/reportview.js b/frappe/public/js/frappe/views/reports/reportview.js index bdc85ae3fd..54e08fa50b 100644 --- a/frappe/public/js/frappe/views/reports/reportview.js +++ b/frappe/public/js/frappe/views/reports/reportview.js @@ -500,9 +500,9 @@ frappe.views.ReportView = frappe.ui.BaseList.extend({ }, edit_cell: function(row, docfield) { - if(!docfield || docfield.fieldname !== "idx" && - frappe.model.std_fields_list.indexOf(docfield.fieldname)!==-1) { - return; + if(!docfield || docfield.fieldname !== "idx" + && frappe.model.std_fields_list.indexOf(docfield.fieldname)!==-1) { + return; } else if(frappe.boot.user.can_write.indexOf(this.doctype)===-1) { frappe.throw({message:__("No permission to edit"), title:__('Not Permitted')}); } @@ -581,13 +581,13 @@ frappe.views.ReportView = frappe.ui.BaseList.extend({ if(this.can_delete) { std_columns = std_columns.concat([{ id:'_check', field:'_check', name: "", width: 30, maxWidth: 30, - formatter: function(row, cell, value, columnDef, dataContext) { - return repl("", { - row: row, - checked: (dataContext.selected ? "checked=\"checked\"" : "") - }); - } + formatter: function(row, cell, value, columnDef, dataContext) { + return repl("", { + row: row, + checked: (dataContext.selected ? "checked=\"checked\"" : "") + }); + } }]); } return std_columns.concat(this.build_columns()); diff --git a/frappe/public/js/legacy/clientscriptAPI.js b/frappe/public/js/legacy/clientscriptAPI.js index 5d25d9d973..7a4af8222e 100644 --- a/frappe/public/js/legacy/clientscriptAPI.js +++ b/frappe/public/js/legacy/clientscriptAPI.js @@ -1,12 +1,11 @@ // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // MIT License. See license.txt -get_server_fields = function(method, arg, table_field, doc, dt, dn, allow_edit, call_back) { +window.get_server_fields = function(method, arg, table_field, doc, dt, dn, allow_edit, call_back) { console.warn("This function 'get_server_fields' has been deprecated and will be removed soon."); frappe.dom.freeze(); if($.isPlainObject(arg)) arg = JSON.stringify(arg); - return $c('runserverobj', - args={'method': method, 'docs': JSON.stringify(doc), 'arg': arg }, + return $c('runserverobj', {'method': method, 'docs': JSON.stringify(doc), 'arg': arg }, function(r, rt) { frappe.dom.unfreeze(); if (r.message) { @@ -24,12 +23,11 @@ get_server_fields = function(method, arg, table_field, doc, dt, dn, allow_edit, doc = locals[doc.doctype][doc.name]; call_back(doc, dt, dn); } - } - ); + }); } -set_multiple = function (dt, dn, dict, table_field) { +window.set_multiple = function (dt, dn, dict, table_field) { var d = locals[dt][dn]; for(var key in dict) { d[key] = dict[key]; @@ -40,7 +38,7 @@ set_multiple = function (dt, dn, dict, table_field) { } } -refresh_many = function (flist, dn, table_field) { +window.refresh_many = function (flist, dn, table_field) { for(var i in flist) { if (table_field) refresh_field(flist[i], dn, table_field); @@ -49,7 +47,7 @@ refresh_many = function (flist, dn, table_field) { } } -set_field_tip = function(n,txt) { +window.set_field_tip = function(n,txt) { var df = frappe.meta.get_docfield(cur_frm.doctype, n, cur_frm.docname); if(df)df.description = txt; @@ -84,11 +82,11 @@ refresh_field = function(n, docname, table_field) { } } -set_field_options = function(n, txt) { +window.set_field_options = function(n, txt) { cur_frm.set_df_property(n, 'options', txt) } -set_field_permlevel = function(n, level) { +window.set_field_permlevel = function(n, level) { cur_frm.set_df_property(n, 'permlevel', level) } @@ -192,7 +190,7 @@ _f.Frm.prototype.set_df_property = function(fieldname, property, value, docname, var df = this.get_docfield(fieldname); } else { var grid = cur_frm.fields_dict[table_field].grid, - fname = frappe.utils.filter_dict(grid.docfields, {'fieldname': fieldname}); + fname = frappe.utils.filter_dict(grid.docfields, {'fieldname': fieldname}); if (fname && fname.length) var df = frappe.meta.get_docfield(fname[0].parent, fieldname, docname); } diff --git a/frappe/public/js/legacy/dom.js b/frappe/public/js/legacy/dom.js index ab99c8f68a..13d1ab2942 100644 --- a/frappe/public/js/legacy/dom.js +++ b/frappe/public/js/legacy/dom.js @@ -164,5 +164,5 @@ frappe.urllib = { } } -get_url_arg = frappe.urllib.get_arg; -get_url_dict = frappe.urllib.get_dict; +window.get_url_arg = frappe.urllib.get_arg; +window.get_url_dict = frappe.urllib.get_dict; diff --git a/frappe/public/js/legacy/form.js b/frappe/public/js/legacy/form.js index 21263888cf..a322523350 100644 --- a/frappe/public/js/legacy/form.js +++ b/frappe/public/js/legacy/form.js @@ -393,12 +393,11 @@ _f.Frm.prototype.refresh = function(docname) { if(docname) { // record switch - if(this.docname != docname && (!this.meta.in_dialog || this.in_form) && - !this.meta.istable) { - frappe.utils.scroll_to(0); - this.hide_print(); - } - frappe.ui.form.close_grid_form(); + if(this.docname != docname && (!this.meta.in_dialog || this.in_form) && !this.meta.istable) { + frappe.utils.scroll_to(0); + this.hide_print(); + } + frappe.ui.form.close_grid_form(); this.docname = docname; } diff --git a/frappe/public/js/legacy/print_format.js b/frappe/public/js/legacy/print_format.js index a05fb8579f..c4c060fa0e 100644 --- a/frappe/public/js/legacy/print_format.js +++ b/frappe/public/js/legacy/print_format.js @@ -609,7 +609,7 @@ $.extend(_p, { return html; }, - add_layout: function(doctype) {v + add_layout: function(doctype) { var layout = new Layout(); layout.addrow(); From 2ff26d77987f55955efac9b3591fd21573871c0d Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Fri, 19 May 2017 17:45:37 +0530 Subject: [PATCH 4/8] Update eslint --- .eslintignore | 3 ++- .eslintrc | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.eslintignore b/.eslintignore index 7a9c501bc6..5b7463352b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ frappe/public/js/lib/* -frappe/public/js/frappe/misc/tests/* \ No newline at end of file +frappe/public/js/frappe/misc/tests/* +frappe/public/js/frappe/class.js \ No newline at end of file diff --git a/.eslintrc b/.eslintrc index 1194af2016..a549dc658a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -14,18 +14,17 @@ "unix" ], "quotes": [ - "off", - "double" + "off" ], "semi": [ - "off", + "warn", "always" ], "no-unused-vars": [ - "off" + "warn" ], "no-redeclare": [ - "off" + "warn" ], "no-console": [ "off" @@ -62,6 +61,7 @@ "cur_page": true, "cur_list": true, "cur_tree": true, + "msg_dialog": true, "is_null": true, "in_list": true, "has_common": true, @@ -88,6 +88,10 @@ "get_number_format_info": true, "$c": true, + "$a": true, + "$i": true, + "$bg": true, + "$y": true, "$c_obj": true, "refresh_many": true, "refresh_field": true, From e243d76244868fd632aa4964eccd7bb8df66fd4d Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Fri, 19 May 2017 18:31:45 +0530 Subject: [PATCH 5/8] Rename validated to frappe.validated --- .../doctype/property_setter/property_setter.js | 2 +- frappe/public/js/legacy/form.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frappe/custom/doctype/property_setter/property_setter.js b/frappe/custom/doctype/property_setter/property_setter.js index 42f3f7965c..3f2398c46a 100644 --- a/frappe/custom/doctype/property_setter/property_setter.js +++ b/frappe/custom/doctype/property_setter/property_setter.js @@ -5,7 +5,7 @@ $.extend(cur_frm.cscript, { validate: function(doc) { if(doc.property_type=='Check' && !in_list(['0','1'], doc.value)) { frappe.msgprint(__('Value for a check field can be either 0 or 1')); - validated = false; + frappe.validated = false; } } }) diff --git a/frappe/public/js/legacy/form.js b/frappe/public/js/legacy/form.js index a322523350..433a8198c0 100644 --- a/frappe/public/js/legacy/form.js +++ b/frappe/public/js/legacy/form.js @@ -690,7 +690,7 @@ _f.Frm.prototype.reload_doc = function() { } } -var validated; +frappe.validated = 0; _f.Frm.prototype.save = function(save_action, callback, btn, on_error) { btn && $(btn).prop("disabled", true); $(document.activeElement).blur(); @@ -727,12 +727,12 @@ _f.Frm.prototype._save = function(save_action, callback, btn, on_error) { if(save_action != "Update") { // validate - validated = true; + frappe.validated = true; $.when(this.script_manager.trigger("validate"), this.script_manager.trigger("before_save")) .done(function() { // done is called after all ajaxes in validate & before_save are completed :) - if(!validated) { + if(!frappe.validated) { btn && $(btn).prop("disabled", false); if(on_error) { on_error(); @@ -753,9 +753,9 @@ _f.Frm.prototype.savesubmit = function(btn, callback, on_error) { var me = this; this.validate_form_action("Submit"); frappe.confirm(__("Permanently Submit {0}?", [this.docname]), function() { - validated = true; + frappe.validated = true; me.script_manager.trigger("before_submit").done(function() { - if(!validated) { + if(!frappe.validated) { if(on_error) on_error(); return; @@ -776,9 +776,9 @@ _f.Frm.prototype.savecancel = function(btn, callback, on_error) { var me = this; this.validate_form_action('Cancel'); frappe.confirm(__("Permanently Cancel {0}?", [this.docname]), function() { - validated = true; + frappe.validated = true; me.script_manager.trigger("before_cancel").done(function() { - if(!validated) { + if(!frappe.validated) { if(on_error) on_error(); return; From e1b243996a918af081c9e1f07634c1214b0e318c Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Wed, 24 May 2017 20:17:14 +0530 Subject: [PATCH 6/8] Added files in .eslintignore, updated globals --- .eslintignore | 8 +- .eslintrc | 21 ++- frappe/build.js | 2 +- .../communication/communication_list.js | 2 +- .../doctype/boilerplate/controller_list.js | 1 + frappe/core/doctype/doctype/doctype.js | 2 +- .../core/doctype/error_log/error_log_list.js | 4 +- .../doctype/error_snapshot/error_snapshot.js | 4 +- .../error_snapshot/error_snapshot_list.js | 24 ++-- .../feedback_request/feedback_request.js | 2 +- .../feedback_request/feedback_request_list.js | 4 +- frappe/core/doctype/file/file_list.js | 10 +- .../doctype/report/boilerplate/controller.js | 1 + .../role_permission_for_page_and_report.js | 4 +- .../system_settings/system_settings.js | 10 +- .../page/data_import_tool/data_import_tool.js | 2 +- frappe/core/page/desktop/desktop.js | 26 ++-- .../permission_manager/permission_manager.js | 6 +- .../page/user_permissions/user_permissions.js | 16 ++- .../permitted_documents_for_user.js | 12 +- .../doctype/custom_field/custom_field.js | 6 +- .../doctype/customize_form/customize_form.js | 6 +- frappe/desk/doctype/event/event.js | 8 +- .../desk/doctype/kanban_board/kanban_board.js | 2 +- frappe/desk/doctype/todo/todo.js | 4 +- frappe/desk/page/activity/activity.js | 2 +- frappe/desk/page/applications/applications.js | 2 +- frappe/desk/page/backups/backups.js | 2 +- frappe/desk/page/chat/chat.js | 2 +- frappe/desk/page/modules/modules.js | 2 +- frappe/desk/page/setup_wizard/setup_wizard.js | 26 ++-- .../auto_email_report/auto_email_report.js | 2 +- .../doctype/email_account/email_account.js | 33 +++-- .../doctype/email_domain/email_domain.js | 4 +- .../email/doctype/email_group/email_group.js | 6 +- .../doctype/email_queue/email_queue_list.js | 4 +- frappe/email/doctype/newsletter/newsletter.js | 1 + .../print_format_builder.js | 38 ++--- frappe/public/js/frappe/form/grid.js | 10 +- frappe/public/js/frappe/misc/utils.js | 2 +- frappe/public/js/frappe/model/create_new.js | 3 - frappe/public/js/frappe/ui/filters/filters.js | 14 +- .../js/frappe/ui/toolbar/search_utils.js | 43 ------ .../js/frappe/views/kanban/kanban_view.js | 2 +- frappe/public/js/legacy/layout.js | 1 + frappe/public/js/legacy/print_table.js | 2 +- .../views/kanban => lib}/fluxify.min.js | 0 frappe/templates/includes/contact.js | 10 +- frappe/website/doctype/web_form/web_form.js | 130 +++++++++--------- .../doctype/website_theme/website_theme.js | 3 +- frappe/website/js/web_form.js | 27 ++-- frappe/website/js/website.js | 7 +- socketio.js | 12 +- 53 files changed, 278 insertions(+), 299 deletions(-) rename frappe/public/js/{frappe/views/kanban => lib}/fluxify.min.js (100%) diff --git a/.eslintignore b/.eslintignore index 5b7463352b..2fd65d307d 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,9 @@ frappe/public/js/lib/* frappe/public/js/frappe/misc/tests/* -frappe/public/js/frappe/class.js \ No newline at end of file +frappe/public/js/frappe/views/test_runner.js +frappe/core/doctype/doctype/boilerplate/* +frappe/core/doctype/report/boilerplate/* +frappe/public/js/frappe/class.js +frappe/templates/includes/* +frappe/tests/testcafe/* +frappe/www/website_script.js \ No newline at end of file diff --git a/.eslintrc b/.eslintrc index a549dc658a..eedc376efd 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,13 +1,15 @@ { "env": { "browser": true, + "node": true, "es6": true }, "extends": "eslint:recommended", "rules": { "indent": [ "error", - "tab" + "tab", + { "SwitchCase": 1 } ], "linebreak-style": [ "error", @@ -27,9 +29,16 @@ "warn" ], "no-console": [ + "warn" + ], + "no-extra-boolean-cast": [ + "off" + ], + "no-control-regex": [ "off" ] }, + "root": true, "globals": { "frappe": true, "$": true, @@ -86,7 +95,9 @@ "CANCEL": true, "copy_dict": true, "get_number_format_info": true, - + "print_table": true, + "Layout": true, + "web_form_settings": true, "$c": true, "$a": true, "$i": true, @@ -99,6 +110,10 @@ "get_field_obj": true, "get_query_params": true, "unhide_field": true, - "hide_field": true + "hide_field": true, + "set_field_options": true, + "getCookie": true, + "getCookies": true, + "get_url_arg": true } } \ No newline at end of file diff --git a/frappe/build.js b/frappe/build.js index 1caaa0fcb3..5afe41b266 100644 --- a/frappe/build.js +++ b/frappe/build.js @@ -25,7 +25,7 @@ const action = process.argv[2] || '--build'; if (['--build', '--watch'].indexOf(action) === -1) { console.log('Invalid argument: ', action); - return; + process.exit(); } if (action === '--build') { diff --git a/frappe/core/doctype/communication/communication_list.js b/frappe/core/doctype/communication/communication_list.js index 69cad3ceba..0df5bfb9b9 100644 --- a/frappe/core/doctype/communication/communication_list.js +++ b/frappe/core/doctype/communication/communication_list.js @@ -9,7 +9,7 @@ frappe.listview_settings['Communication'] = { filters: [["status", "=", "Open"]], onload: function(list_view) { - method = "frappe.email.inbox.create_email_flag_queue" + var method = "frappe.email.inbox.create_email_flag_queue" list_view.page.add_menu_item(__("Mark as Read"), function() { list_view.call_for_selected_items(method, { action: "Read" }) diff --git a/frappe/core/doctype/doctype/boilerplate/controller_list.js b/frappe/core/doctype/doctype/boilerplate/controller_list.js index 7f4915b301..9d0a405176 100644 --- a/frappe/core/doctype/doctype/boilerplate/controller_list.js +++ b/frappe/core/doctype/doctype/boilerplate/controller_list.js @@ -1,3 +1,4 @@ +/* eslint-disable */ frappe.listview_settings['{doctype}'] = {{ add_fields: ["status"], filters:[["status","=", "Open"]] diff --git a/frappe/core/doctype/doctype/doctype.js b/frappe/core/doctype/doctype/doctype.js index 2b0c53abf2..c44fff15d5 100644 --- a/frappe/core/doctype/doctype/doctype.js +++ b/frappe/core/doctype/doctype/doctype.js @@ -13,7 +13,7 @@ frappe.ui.form.on('DocType', { refresh: function(frm) { - if(frm.is_new() && (user !== "Administrator" || !frappe.boot.developer_mode)) { + if(frm.is_new() && (frappe.session.user !== "Administrator" || !frappe.boot.developer_mode)) { frm.set_value("custom", 1); frm.toggle_enable("custom", 0); } diff --git a/frappe/core/doctype/error_log/error_log_list.js b/frappe/core/doctype/error_log/error_log_list.js index 59c4a3011c..91e69452ff 100644 --- a/frappe/core/doctype/error_log/error_log_list.js +++ b/frappe/core/doctype/error_log/error_log_list.js @@ -1,9 +1,9 @@ frappe.listview_settings['Error Log'] = { add_fields: ["seen"], get_indicator: function(doc) { - if(cint(doc.seen)) { + if(cint(doc.seen)) { return [__("Seen"), "green", "seen,=,1"]; - } else { + } else { return [__("Not Seen"), "red", "seen,=,0"]; } }, diff --git a/frappe/core/doctype/error_snapshot/error_snapshot.js b/frappe/core/doctype/error_snapshot/error_snapshot.js index 7e9e1313f1..c1b2d996a1 100644 --- a/frappe/core/doctype/error_snapshot/error_snapshot.js +++ b/frappe/core/doctype/error_snapshot/error_snapshot.js @@ -1,9 +1,9 @@ frappe.ui.form.on("Error Snapshot", "load", function(frm){ - frm.set_read_only(true); + frm.set_read_only(true); }); frappe.ui.form.on("Error Snapshot", "refresh", function(frm){ - frm.set_df_property("view", "options", frappe.render_template("error_snapshot", {"doc": frm.doc})); + frm.set_df_property("view", "options", frappe.render_template("error_snapshot", {"doc": frm.doc})); if (frm.doc.relapses) { frm.add_custom_button(__('Show Relapses'), function() { diff --git a/frappe/core/doctype/error_snapshot/error_snapshot_list.js b/frappe/core/doctype/error_snapshot/error_snapshot_list.js index dfaeb7ab85..1ba3e344ae 100644 --- a/frappe/core/doctype/error_snapshot/error_snapshot_list.js +++ b/frappe/core/doctype/error_snapshot/error_snapshot_list.js @@ -1,14 +1,14 @@ frappe.listview_settings["Error Snapshot"] = { - add_fields: ["parent_error_snapshot", "relapses", "seen"], - filters:[ - ["parent_error_snapshot","=",null], - ["seen", "=", false] - ], - get_indicator: function(doc){ - if (doc.parent_error_snapshot && doc.parent_error_snapshot.length){ - return [__("Relapsed"), !doc.seen ? "orange" : "blue", "parent_error_snapshot,!=,"]; - } else { - return [__("First Level"), !doc.seen ? "red" : "green", "parent_error_snapshot,=,"]; - } - } + add_fields: ["parent_error_snapshot", "relapses", "seen"], + filters:[ + ["parent_error_snapshot","=",null], + ["seen", "=", false] + ], + get_indicator: function(doc){ + if (doc.parent_error_snapshot && doc.parent_error_snapshot.length){ + return [__("Relapsed"), !doc.seen ? "orange" : "blue", "parent_error_snapshot,!=,"]; + } else { + return [__("First Level"), !doc.seen ? "red" : "green", "parent_error_snapshot,=,"]; + } + } } diff --git a/frappe/core/doctype/feedback_request/feedback_request.js b/frappe/core/doctype/feedback_request/feedback_request.js index 5ebdec83e3..d32982a9f1 100644 --- a/frappe/core/doctype/feedback_request/feedback_request.js +++ b/frappe/core/doctype/feedback_request/feedback_request.js @@ -3,7 +3,7 @@ frappe.ui.form.on('Feedback Request', { refresh: function(frm) { - rating_icons = frappe.render_template("rating_icons", {rating: frm.doc.rating, show_label: false}); + var rating_icons = frappe.render_template("rating_icons", {rating: frm.doc.rating, show_label: false}); $(frm.fields_dict.feedback_rating.wrapper).html(rating_icons); if(frm.doc.reference_doctype && frm.doc.reference_name) { diff --git a/frappe/core/doctype/feedback_request/feedback_request_list.js b/frappe/core/doctype/feedback_request/feedback_request_list.js index 17f7b09cd4..69d511582f 100644 --- a/frappe/core/doctype/feedback_request/feedback_request_list.js +++ b/frappe/core/doctype/feedback_request/feedback_request_list.js @@ -4,13 +4,13 @@ frappe.listview_settings['Feedback Request'] = { }, column_render: { rating: function(doc) { - html = "" + var html = "" for (var i = 0; i < 5; i++) { html += repl("", {color: i").html(col[0]).css("width", col[1]+"px") - .appendTo(me.table.find("thead tr")); - }); + $("") + .html(col[0]) + .css("width", col[1]+"px") + .appendTo(me.table.find("thead tr")); + }); $.each(this.prop_list, function(i, d) { diff --git a/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.js b/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.js index d54f166fd3..b53ba70cb8 100644 --- a/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.js +++ b/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.js @@ -16,7 +16,7 @@ frappe.query_reports["Permitted Documents For User"] = { "fieldtype": "Link", "options": "DocType", "reqd": 1, - "get_query": function() { + "get_query": function () { return { "query": "frappe.core.report.permitted_documents_for_user.permitted_documents_for_user.query_doctypes", "filters": { @@ -25,10 +25,10 @@ frappe.query_reports["Permitted Documents For User"] = { } } }, - { - "fieldname": "show_permissions", - "label": __("Show Permissions"), - "fieldtype": "Check" - } + { + "fieldname": "show_permissions", + "label": __("Show Permissions"), + "fieldtype": "Check" + } ] } diff --git a/frappe/custom/doctype/custom_field/custom_field.js b/frappe/custom/doctype/custom_field/custom_field.js index 30a5bcef5f..a74e7bd640 100644 --- a/frappe/custom/doctype/custom_field/custom_field.js +++ b/frappe/custom/doctype/custom_field/custom_field.js @@ -7,10 +7,10 @@ frappe.ui.form.on('Custom Field', { setup: function(frm) { frm.set_query('dt', function(doc) { - filters = [ + var filters = [ ['DocType', 'issingle', '=', 0], ]; - if(user!=="Administrator") { + if(frappe.session.user!=="Administrator") { filters.push(['DocType', 'module', '!=', 'Core']) } return { @@ -57,7 +57,7 @@ frappe.ui.form.on('Custom Field', { fieldtype: function(frm) { if(frm.doc.fieldtype == 'Link') { frm.fields_dict['options_help'].disp_area.innerHTML = - __('Name of the Document Type (DocType) you want this field to be linked to. e.g. Customer'); + __('Name of the Document Type (DocType) you want this field to be linked to. e.g. Customer'); } else if(frm.doc.fieldtype == 'Select') { frm.fields_dict['options_help'].disp_area.innerHTML = __('Options for select. Each option on a new line.')+' '+__('e.g.:')+'
'+__('Option 1')+'
'+__('Option 2')+'
'+__('Option 3')+'
'; diff --git a/frappe/custom/doctype/customize_form/customize_form.js b/frappe/custom/doctype/customize_form/customize_form.js index 71c3cbb3e4..6515805a85 100644 --- a/frappe/custom/doctype/customize_form/customize_form.js +++ b/frappe/custom/doctype/customize_form/customize_form.js @@ -14,8 +14,8 @@ frappe.ui.form.on("Customize Form", { ['DocType', 'issingle', '=', 0], ['DocType', 'custom', '=', 0], ['DocType', 'name', 'not in', 'DocType, DocField, DocPerm, User, Role, Has Role, \ - Page, Has Role, Module Def, Print Format, Report, Customize Form, \ - Customize Form Field'] + Page, Has Role, Module Def, Print Format, Report, Customize Form, \ + Customize Form Field'] ] }; }); @@ -262,7 +262,7 @@ frappe.customize_form.add_fields_help = function(frm) { \ Show field if a condition is met
\ Example: eval:doc.status=='Cancelled'\ - on a field like \"reason_for_cancellation\" will reveal \ + on a field like \"reason_for_cancellation\" will reveal \ \"Reason for Cancellation\" only if the record is Cancelled.\ \ \ diff --git a/frappe/desk/doctype/event/event.js b/frappe/desk/doctype/event/event.js index cbfaa0a264..660e31113f 100644 --- a/frappe/desk/doctype/event/event.js +++ b/frappe/desk/doctype/event/event.js @@ -4,8 +4,8 @@ frappe.ui.form.on("Event", { onload: function(frm) { frm.set_query("ref_type", function(txt) { - return { - "filters": { + return { + "filters": { "issingle": 0, } }; @@ -20,8 +20,8 @@ frappe.ui.form.on("Event", { }, repeat_on: function(frm) { if(frm.doc.repeat_on==="Every Day") { - $.each(["monday", "tuesday", "wednesday", "thursday", "friday", - "saturday", "sunday"], function(i,v) { + ["monday", "tuesday", "wednesday", "thursday", + "friday", "saturday", "sunday"].map(function(v) { frm.set_value(v, 1); }); } diff --git a/frappe/desk/doctype/kanban_board/kanban_board.js b/frappe/desk/doctype/kanban_board/kanban_board.js index 9dde5f119e..ca49bc308e 100644 --- a/frappe/desk/doctype/kanban_board/kanban_board.js +++ b/frappe/desk/doctype/kanban_board/kanban_board.js @@ -35,7 +35,7 @@ frappe.ui.form.on('Kanban Board', { field.options && field.options.split('\n').forEach(function(o, i) { o = o.trim(); if(!o) return; - d = frm.add_child('columns'); + var d = frm.add_child('columns'); d.column_name = o; }); frm.refresh(); diff --git a/frappe/desk/doctype/todo/todo.js b/frappe/desk/doctype/todo/todo.js index a50b9e038a..8a13103311 100644 --- a/frappe/desk/doctype/todo/todo.js +++ b/frappe/desk/doctype/todo/todo.js @@ -3,8 +3,8 @@ frappe.ui.form.on("ToDo", { onload: function(frm) { frm.set_query("reference_type", function(txt) { - return { - "filters": { + return { + "filters": { "issingle": 0, } }; diff --git a/frappe/desk/page/activity/activity.js b/frappe/desk/page/activity/activity.js index 10cc7962ad..c74800cc82 100644 --- a/frappe/desk/page/activity/activity.js +++ b/frappe/desk/page/activity/activity.js @@ -32,7 +32,7 @@ frappe.pages['activity'].on_page_load = function(wrapper) { }, show_filters: true, doctype: "Communication", - get_args: function() { + get_args: function() { if (frappe.route_options && frappe.route_options.show_likes) { delete frappe.route_options.show_likes; return { diff --git a/frappe/desk/page/applications/applications.js b/frappe/desk/page/applications/applications.js index 3cd33d7000..8f145fc4f8 100644 --- a/frappe/desk/page/applications/applications.js +++ b/frappe/desk/page/applications/applications.js @@ -21,7 +21,7 @@ frappe.applications.Installer = Class.extend({ me.make_page(); // no apps - if(!keys(apps).length) { + if(!Object.keys(apps).length) { me.wrapper.html('
' + __("No Apps Installed") + '
'); return; } diff --git a/frappe/desk/page/backups/backups.js b/frappe/desk/page/backups/backups.js index ce43f63d14..c42819aba1 100644 --- a/frappe/desk/page/backups/backups.js +++ b/frappe/desk/page/backups/backups.js @@ -5,7 +5,7 @@ frappe.pages['backups'].on_page_load = function(wrapper) { single_column: true }); - page.add_inner_button(__("Set Number of Backups"), function() { + page.add_inner_button(__("Set Number of Backups"), function () { frappe.set_route('Form', 'System Settings'); }); diff --git a/frappe/desk/page/chat/chat.js b/frappe/desk/page/chat/chat.js index 1e1287e36a..b1bb2e0a28 100644 --- a/frappe/desk/page/chat/chat.js +++ b/frappe/desk/page/chat/chat.js @@ -220,7 +220,7 @@ frappe.Chat = Class.extend({ if(data.owner==data.reference_name && data.communication_type!=="Notification" && data.comment_type!=="Bot") { - data.is_public = true; + data.is_public = true; } if(data.owner==data.reference_name && data.communication_type !== "Bot") { diff --git a/frappe/desk/page/modules/modules.js b/frappe/desk/page/modules/modules.js index 62f51c9eed..87361d951f 100644 --- a/frappe/desk/page/modules/modules.js +++ b/frappe/desk/page/modules/modules.js @@ -63,7 +63,7 @@ frappe.pages['modules'].on_page_load = function(wrapper) { module: module_name }, callback: function(r) { - m = frappe.get_module(module_name); + var m = frappe.get_module(module_name); m.data = r.message.data; process_data(module_name, m.data); page.section_data[module_name] = m; diff --git a/frappe/desk/page/setup_wizard/setup_wizard.js b/frappe/desk/page/setup_wizard/setup_wizard.js index 8707f7c300..28ac0bf48c 100644 --- a/frappe/desk/page/setup_wizard/setup_wizard.js +++ b/frappe/desk/page/setup_wizard/setup_wizard.js @@ -155,7 +155,7 @@ frappe.wiz.Wizard = Class.extend({ }, 2000); }, error: function(r) { - var d = msgprint(__("There were errors.")); + var d = frappe.msgprint(__("There were errors.")); d.custom_onhide = function() { frappe.set_route(me.page_name, me.slides.length - 1); }; @@ -229,14 +229,14 @@ frappe.wiz.WizardSlide = Class.extend({ } this.$body = $(frappe.render_template("setup_wizard_page", { - help: __(this.help), - title:__(this.title), - main_title:__(this.wiz.title), - step: this.id + 1, - name: this.name, - css_class: this.css_class || "", - slides_count: this.wiz.slides.length - })).appendTo(this.$wrapper); + help: __(this.help), + title:__(this.title), + main_title:__(this.wiz.title), + step: this.id + 1, + name: this.name, + css_class: this.css_class || "", + slides_count: this.wiz.slides.length + })).appendTo(this.$wrapper); this.body = this.$body.find(".form")[0]; @@ -314,7 +314,7 @@ frappe.wiz.WizardSlide = Class.extend({ //setup mousefree navigation this.$body.on('keypress', function(e) { if(e.which === 13) { - $target = $(e.target); + var $target = $(e.target); if($target.hasClass('prev-btn')) { me.prev(); } else if($target.hasClass('btn-attach')) { @@ -469,7 +469,7 @@ function load_frappe_slides() { var data = frappe.wiz.regional_data; slide.get_input("country").empty() - .add_options([""].concat(keys(data.country_info).sort())); + .add_options([""].concat(Object.keys(data.country_info).sort())); slide.get_input("currency").empty() @@ -559,7 +559,7 @@ function load_frappe_slides() { ], help: __('The first user will become the System Manager (you can change this later).'), onload: function(slide) { - if(user!=="Administrator") { + if(frappe.session.user!=="Administrator") { slide.form.fields_dict.password.$wrapper.toggle(false); slide.form.fields_dict.email.$wrapper.toggle(false); if(frappe.boot.user.first_name || frappe.boot.user.last_name) { @@ -580,7 +580,7 @@ function load_frappe_slides() { }, css_class: "single-column" }; -}; +} frappe.wiz.on("before_load", function() { load_frappe_slides(); diff --git a/frappe/email/doctype/auto_email_report/auto_email_report.js b/frappe/email/doctype/auto_email_report/auto_email_report.js index 27d363d83e..3b4fb1962f 100644 --- a/frappe/email/doctype/auto_email_report/auto_email_report.js +++ b/frappe/email/doctype/auto_email_report/auto_email_report.js @@ -62,7 +62,7 @@ frappe.ui.form.on('Auto Email Report', { var table = $('\ \
'+__('Filter')+''+__('Value')+'
').appendTo(wrapper); - $('

' + __("Click table to edit") + '

').appendTo(wrapper); + $('

' + __("Click table to edit") + '

').appendTo(wrapper); var filters = JSON.parse(frm.doc.filters || '{}'); var report_filters = frappe.query_reports[frm.doc.report].filters; diff --git a/frappe/email/doctype/email_account/email_account.js b/frappe/email/doctype/email_account/email_account.js index 552f5108ad..cb9efd707d 100644 --- a/frappe/email/doctype/email_account/email_account.js +++ b/frappe/email/doctype/email_account/email_account.js @@ -18,7 +18,6 @@ frappe.email_defaults = { "use_imap": 1 }, "Sendgrid": { - "enable_outgoing": 0, "enable_outgoing": 1, "smtp_server": "smtp.sendgrid.net", "smtp_port": 587, @@ -71,7 +70,7 @@ frappe.ui.form.on("Email Account", { service: function(frm) { $.each(frappe.email_defaults[frm.doc.service], function(key, value) { frm.set_value(key, value); - }) + }); if (!frm.doc.use_imap) { $.each(frappe.email_defaults_pop[frm.doc.service], function(key, value) { frm.set_value(key, value); @@ -94,7 +93,7 @@ frappe.ui.form.on("Email Account", { }, enable_incoming: function(frm) { - frm.doc.no_remaining = null //perform full sync + frm.doc.no_remaining = null; //perform full sync //frm.set_df_property("append_to", "reqd", frm.doc.enable_incoming); }, @@ -114,8 +113,8 @@ frappe.ui.form.on("Email Account", { frm.events.show_gmail_message_for_less_secure_apps(frm); if(frappe.route_flags.delete_user_from_locals && frappe.route_flags.linked_user) { - delete frappe.route_flags.delete_user_from_locals - delete locals['User'][frappe.route_flags.linked_user] + delete frappe.route_flags.delete_user_from_locals; + delete locals['User'][frappe.route_flags.linked_user]; } }, @@ -134,7 +133,7 @@ frappe.ui.form.on("Email Account", { update_domain: function(frm){ if (!frm.doc.email_id && !frm.doc.service){ - return + return; } frappe.call({ @@ -145,17 +144,17 @@ frappe.ui.form.on("Email Account", { }, callback: function (r) { if (r.message) { - frm.events.set_domain_fields(frm, r.message) + frm.events.set_domain_fields(frm, r.message); } else { - frm.set_value("domain", "") + frm.set_value("domain", ""); frappe.confirm(__('Email Domain not configured for this account, Create one?'), function () { frappe.model.with_doctype("Email Domain", function() { frappe.route_options = { email_id: frm.doc.email_id }; - frappe.route_flags.return_to_email_account = 1 + frappe.route_flags.return_to_email_account = 1; var doc = frappe.model.get_new_doc("Email Domain"); frappe.set_route("Form", "Email Domain", doc.name); - }) + }); } ); } @@ -165,26 +164,26 @@ frappe.ui.form.on("Email Account", { set_domain_fields: function(frm, args) { if(!args){ - args = frappe.route_flags.set_domain_values? frappe.route_options: {} + args = frappe.route_flags.set_domain_values? frappe.route_options: {}; } - for(field in args) { + for(var field in args) { frm.set_value(field, args[field]); } - delete frappe.route_flags.set_domain_values - frappe.route_options = {} + delete frappe.route_flags.set_domain_values; + frappe.route_options = {}; }, email_sync_option: function(frm) { // confirm if the ALL sync option is selected if(frm.doc.email_sync_option == "ALL"){ - msg = __("You are selecting Sync Option as ALL, It will resync all \ + var msg = __("You are selecting Sync Option as ALL, It will resync all \ read as well as unread message from server. This may also cause the duplication\ - of Communication (emails).") + of Communication (emails)."); frappe.confirm(msg, null, function() { - frm.set_value("email_sync_option", "UNSEEN") + frm.set_value("email_sync_option", "UNSEEN"); }); } } diff --git a/frappe/email/doctype/email_domain/email_domain.js b/frappe/email/doctype/email_domain/email_domain.js index 8b4fb70ffd..1716bf9900 100644 --- a/frappe/email/doctype/email_domain/email_domain.js +++ b/frappe/email/doctype/email_domain/email_domain.js @@ -9,8 +9,8 @@ frappe.ui.form.on("Email Domain", { frm.set_value("domain_name",frm.doc.email_id.split("@")[1]) } - if (frm.doc.__islocal != 1 && frappe.route_flags.return_to_email_account) { - var route = frappe.get_prev_route() + if (frm.doc.__islocal != 1 && frappe.route_flags.return_to_email_account) { + var route = frappe.get_prev_route(); delete frappe.route_flags.return_to_email_account; frappe.route_flags.set_domain_values = true diff --git a/frappe/email/doctype/email_group/email_group.js b/frappe/email/doctype/email_group/email_group.js index df4691c427..63c3832b47 100644 --- a/frappe/email/doctype/email_group/email_group.js +++ b/frappe/email/doctype/email_group/email_group.js @@ -10,7 +10,8 @@ frappe.ui.form.on("Email Group", "refresh", function(frm) { frm.add_custom_button(__("Import Subscribers"), function() { frappe.prompt({fieldtype:"Select", options: frm.doc.__onload.import_types, - label:__("Import Email From"), fieldname:"doctype", reqd:1}, function(data) { + label:__("Import Email From"), fieldname:"doctype", reqd:1}, + function(data) { frappe.call({ method: "frappe.email.doctype.email_group.email_group.import_from", args: { @@ -26,7 +27,8 @@ frappe.ui.form.on("Email Group", "refresh", function(frm) { frm.add_custom_button(__("Add Subscribers"), function() { frappe.prompt({fieldtype:"Text", - label:__("Email Addresses"), fieldname:"email_list", reqd:1}, function(data) { + label:__("Email Addresses"), fieldname:"email_list", reqd:1}, + function(data) { frappe.call({ method: "frappe.email.doctype.email_group.email_group.add_subscribers", args: { diff --git a/frappe/email/doctype/email_queue/email_queue_list.js b/frappe/email/doctype/email_queue/email_queue_list.js index d9d352f06d..0445a3ca19 100644 --- a/frappe/email/doctype/email_queue/email_queue_list.js +++ b/frappe/email/doctype/email_queue/email_queue_list.js @@ -1,10 +1,10 @@ frappe.listview_settings['Email Queue'] = { get_indicator: function(doc) { - colour = {'Sent': 'green', 'Sending': 'blue', 'Not Sent': 'grey', 'Error': 'red', 'Expired': 'orange'}; + var colour = {'Sent': 'green', 'Sending': 'blue', 'Not Sent': 'grey', 'Error': 'red', 'Expired': 'orange'}; return [__(doc.status), colour[doc.status], "status,=," + doc.status]; }, refresh: function(doclist){ - if (has_common(roles, ["Administrator", "System Manager"])){ + if (has_common(frappe.user_roles, ["Administrator", "System Manager"])){ if (cint(frappe.defaults.get_default("hold_queue"))){ doclist.page.clear_inner_toolbar() doclist.page.add_inner_button(__("Resume Sending"), function() { diff --git a/frappe/email/doctype/newsletter/newsletter.js b/frappe/email/doctype/newsletter/newsletter.js index 15724e1b2d..48e29db048 100644 --- a/frappe/email/doctype/newsletter/newsletter.js +++ b/frappe/email/doctype/newsletter/newsletter.js @@ -1,5 +1,6 @@ // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt +/* globals erpnext */ cur_frm.cscript.refresh = function(doc) { if(window.erpnext) erpnext.toggle_naming_series(); diff --git a/frappe/printing/page/print_format_builder/print_format_builder.js b/frappe/printing/page/print_format_builder/print_format_builder.js index e1aad1a8b4..8e21ee4f50 100644 --- a/frappe/printing/page/print_format_builder/print_format_builder.js +++ b/frappe/printing/page/print_format_builder/print_format_builder.js @@ -622,7 +622,7 @@ frappe.PrintFormatBuilder = Class.extend({ $.each(doc_fields, function(j, f) { if (f && !in_list(column_names, f.fieldname) && !in_list(["Section Break", "Column Break"], f.fieldtype) && f.label) { - fields.push(f); + fields.push(f); } }) // render checkboxes @@ -683,23 +683,23 @@ frappe.PrintFormatBuilder = Class.extend({ get_edit_html_dialog: function(title, label, $content) { var me = this; var d = new frappe.ui.Dialog({ - title: title, - fields: [ - { - fieldname: "content", - fieldtype: "Code", - label: label - }, - { - fieldname: "help", - fieldtype: "HTML", - options: '

' - + __("You can add dynamic properties from the document by using Jinja templating.") - + __("For example: If you want to include the document ID, use {0}", ["{{ doc.name }}"]) - + '

' - } - ] - }); + title: title, + fields: [ + { + fieldname: "content", + fieldtype: "Code", + label: label + }, + { + fieldname: "help", + fieldtype: "HTML", + options: '

' + + __("You can add dynamic properties from the document by using Jinja templating.") + + __("For example: If you want to include the document ID, use {0}", ["{{ doc.name }}"]) + + '

' + } + ] + }); // set existing content in input var content = $content.data('content') || ""; @@ -791,4 +791,4 @@ frappe.PrintFormatBuilder = Class.extend({ } }); } - }); +}); diff --git a/frappe/public/js/frappe/form/grid.js b/frappe/public/js/frappe/form/grid.js index 2b6f05ae7d..e86f7d3051 100644 --- a/frappe/public/js/frappe/form/grid.js +++ b/frappe/public/js/frappe/form/grid.js @@ -435,14 +435,14 @@ frappe.ui.form.Grid = Class.extend({ else { var colsize = 2; switch(df.fieldtype) { - case "Text": - case "Small Text": colsize = 3; break; - case"Check": colsize = 1 + case "Text": + case "Small Text": colsize = 3; break; + case"Check": colsize = 1; } - df.colsize = colsize + df.colsize = colsize; } - total_colsize += df.colsize + total_colsize += df.colsize; if(total_colsize > 11) return false; this.visible_columns.push([df, df.colsize]); diff --git a/frappe/public/js/frappe/misc/utils.js b/frappe/public/js/frappe/misc/utils.js index 50e3a6b102..1ac16538fc 100644 --- a/frappe/public/js/frappe/misc/utils.js +++ b/frappe/public/js/frappe/misc/utils.js @@ -462,7 +462,7 @@ frappe.utils = { // Keep looping over the regular expression matches // until we can no longer find a match. - while (arrMatches = objPattern.exec( strData )){ + while ((arrMatches = objPattern.exec( strData ))){ // Get the delimiter that was found. var strMatchedDelimiter = arrMatches[ 1 ]; diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js index 0575d21f14..2448734dbe 100644 --- a/frappe/public/js/frappe/model/create_new.js +++ b/frappe/public/js/frappe/model/create_new.js @@ -335,7 +335,4 @@ frappe.new_doc = function (doctype, opts) { }); } -// globals for backward compatibility -window.new_doc = frappe.new_doc; - diff --git a/frappe/public/js/frappe/ui/filters/filters.js b/frappe/public/js/frappe/ui/filters/filters.js index 96d9483c1c..ea812a751a 100644 --- a/frappe/public/js/frappe/ui/filters/filters.js +++ b/frappe/public/js/frappe/ui/filters/filters.js @@ -856,14 +856,14 @@ frappe.ui.FieldSelect = Class.extend({ var label = __(df.label) + ' (' + __(df.parent) + ')'; var table = df.parent; } - if(frappe.model.no_value_type.indexOf(df.fieldtype)==-1 && + if(frappe.model.no_value_type.indexOf(df.fieldtype) == -1 && !(me.fields_by_name[df.parent] && me.fields_by_name[df.parent][df.fieldname])) { - this.options.push({ - label: label, - value: table + "." + df.fieldname, - fieldname: df.fieldname, - doctype: df.parent - }) + this.options.push({ + label: label, + value: table + "." + df.fieldname, + fieldname: df.fieldname, + doctype: df.parent + }); if(!me.fields_by_name[df.parent]) me.fields_by_name[df.parent] = {}; me.fields_by_name[df.parent][df.fieldname] = df; } diff --git a/frappe/public/js/frappe/ui/toolbar/search_utils.js b/frappe/public/js/frappe/ui/toolbar/search_utils.js index 3b0370a2e8..a985f9ba96 100644 --- a/frappe/public/js/frappe/ui/toolbar/search_utils.js +++ b/frappe/public/js/frappe/ui/toolbar/search_utils.js @@ -533,7 +533,6 @@ frappe.search.utils = { bolden_match_part: function(str, subseq) { var rendered = ""; -<<<<<<< HEAD if(this.fuzzy_search(subseq, str) === 0) { return str; } else if(this.fuzzy_search(subseq, str) > 6) { @@ -569,45 +568,3 @@ frappe.search.utils = { }, } -======= - if(this.fuzzy_search(subseq, str) === 0) { - return str; - } else if(this.fuzzy_search(subseq, str) > 6) { - var regEx = new RegExp("("+ subseq +")", "ig"); - return str.replace(regEx, '$1'); - } else { - var str_orig = str; - var str = str.toLowerCase(); - var str_len = str.length; - var subseq = subseq.toLowerCase(); - - outer: for(var i = 0, j = 0; i < subseq.length; i++) { - var sub_ch = subseq.charCodeAt(i); - while(j < str_len) { - if(str.charCodeAt(j) === sub_ch) { - var str_char = str_orig.charAt(j); - if(str_char === str_char.toLowerCase()) { - rendered += '' + subseq.charAt(i) + ''; - } else { - rendered += '' + subseq.charAt(i).toUpperCase() + ''; - } - j++; - continue outer; - } - rendered += str_orig.charAt(j); - j++; - } - return str_orig; - } - rendered += str_orig.slice(j); - return rendered; - } - - }, - - unscrub_and_titlecase: function(str) { - return __(str || '').replace(/-|_/g, " ").replace(/\w*/g, - function(keywords){return keywords.charAt(0).toUpperCase() + keywords.substr(1).toLowerCase();}); - }, -} ->>>>>>> Remove all implicit global variables diff --git a/frappe/public/js/frappe/views/kanban/kanban_view.js b/frappe/public/js/frappe/views/kanban/kanban_view.js index 5590f689be..5703282254 100644 --- a/frappe/public/js/frappe/views/kanban/kanban_view.js +++ b/frappe/public/js/frappe/views/kanban/kanban_view.js @@ -71,7 +71,7 @@ frappe.views.KanbanView = frappe.views.ListRenderer.extend({ return frappe.render_template('list_item_row_head', { main: '', list: this }); }, required_libs: [ - 'assets/frappe/js/frappe/views/kanban/fluxify.min.js', + 'assets/frappe/js/lib/fluxify.min.js', 'assets/frappe/js/frappe/views/kanban/kanban_board.js' ] }); \ No newline at end of file diff --git a/frappe/public/js/legacy/layout.js b/frappe/public/js/legacy/layout.js index 512208d168..c68e0c916c 100644 --- a/frappe/public/js/legacy/layout.js +++ b/frappe/public/js/legacy/layout.js @@ -43,6 +43,7 @@ Layout.prototype.addcell = function(width) { return this.cur_row.addCell(width); } +// eslint-disable-next-line Layout.prototype.setcolour = function(col) { $bg(cc,col); } Layout.prototype.show = function() { $(this.wrapper).toggle(false); } diff --git a/frappe/public/js/legacy/print_table.js b/frappe/public/js/legacy/print_table.js index 64072e6fd7..3c8562b1a6 100644 --- a/frappe/public/js/legacy/print_table.js +++ b/frappe/public/js/legacy/print_table.js @@ -192,7 +192,7 @@ frappe.printTable = Class.extend({ }, }) -function print_table(dt, dn, fieldname, tabletype, cols, head_labels, widths, condition, cssClass, modifier) { +window.print_table = function print_table(dt, dn, fieldname, tabletype, cols, head_labels, widths, condition, cssClass, modifier) { return new frappe.printTable({ doctype: dt, docname: dn, diff --git a/frappe/public/js/frappe/views/kanban/fluxify.min.js b/frappe/public/js/lib/fluxify.min.js similarity index 100% rename from frappe/public/js/frappe/views/kanban/fluxify.min.js rename to frappe/public/js/lib/fluxify.min.js diff --git a/frappe/templates/includes/contact.js b/frappe/templates/includes/contact.js index 0937e653b6..a5974e6725 100644 --- a/frappe/templates/includes/contact.js +++ b/frappe/templates/includes/contact.js @@ -14,10 +14,10 @@ frappe.ready(function() { } if(!validate_email(email)) { - frappe.msgprint(__("You seem to have written your name instead of your email. \ - Please enter a valid email address so that we can get back.")); - $('[name="email"]').focus(); - return false; + frappe.msgprint(__("You seem to have written your name instead of your email. \ + Please enter a valid email address so that we can get back.")); + $('[name="email"]').focus(); + return false; } $("#contact-alert").toggle(false); @@ -35,7 +35,7 @@ frappe.ready(function() { $(':input').val(''); } }, this); - return false; + return false; }); }); diff --git a/frappe/website/doctype/web_form/web_form.js b/frappe/website/doctype/web_form/web_form.js index 0162e5ae7f..67f32ef06f 100644 --- a/frappe/website/doctype/web_form/web_form.js +++ b/frappe/website/doctype/web_form/web_form.js @@ -1,80 +1,80 @@ frappe.web_form = { - set_fieldname_select: function(frm) { - var me = this, - doc = frm.doc; - if (doc.doc_type) { - frappe.model.with_doctype(doc.doc_type, function() { - var fields = $.map(frappe.get_doc("DocType", frm.doc.doc_type).fields, function(d) { - if (frappe.model.no_value_type.indexOf(d.fieldtype) === -1 || - d.fieldtype === 'Table') { - return { label: d.label + ' (' + d.fieldtype + ')', value: d.fieldname } - } else { - return null; - } - }) - var currency_fields = $.map(frappe.get_doc("DocType", frm.doc.doc_type).fields, function(d) { - if (d.fieldtype === 'Currency' || d.fieldtype === 'Float') { - return { label: d.label, value: d.fieldname } - } else { - return null; - } - }) - frappe.meta.get_docfield("Web Form Field", "fieldname", frm.doc.name).options = [""].concat(fields); - frappe.meta.get_docfield("Web Form", "amount_field", frm.doc.name).options = [""].concat(currency_fields); - frm.refresh_field("amount_field"); - }); - } - } + set_fieldname_select: function(frm) { + var me = this, + doc = frm.doc; + if (doc.doc_type) { + frappe.model.with_doctype(doc.doc_type, function() { + var fields = $.map(frappe.get_doc("DocType", frm.doc.doc_type).fields, function(d) { + if (frappe.model.no_value_type.indexOf(d.fieldtype) === -1 || + d.fieldtype === 'Table') { + return { label: d.label + ' (' + d.fieldtype + ')', value: d.fieldname } + } else { + return null; + } + }) + var currency_fields = $.map(frappe.get_doc("DocType", frm.doc.doc_type).fields, function(d) { + if (d.fieldtype === 'Currency' || d.fieldtype === 'Float') { + return { label: d.label, value: d.fieldname } + } else { + return null; + } + }) + frappe.meta.get_docfield("Web Form Field", "fieldname", frm.doc.name).options = [""].concat(fields); + frappe.meta.get_docfield("Web Form", "amount_field", frm.doc.name).options = [""].concat(currency_fields); + frm.refresh_field("amount_field"); + }); + } + } } frappe.ui.form.on("Web Form", { - refresh: function(frm) { - // show is-standard only if developer mode - frm.get_field("is_standard").toggle(frappe.boot.developer_mode); + refresh: function(frm) { + // show is-standard only if developer mode + frm.get_field("is_standard").toggle(frappe.boot.developer_mode); - frappe.web_form.set_fieldname_select(frm); + frappe.web_form.set_fieldname_select(frm); - if (frm.doc.is_standard && !frappe.boot.developer_mode) { - frm.set_read_only(); - frm.disable_save(); - } - }, + if (frm.doc.is_standard && !frappe.boot.developer_mode) { + frm.set_read_only(); + frm.disable_save(); + } + }, - title: function(frm) { - if (frm.doc.__islocal) { - var page_name = frm.doc.title.toLowerCase().replace(/ /g, "-"); - frm.set_value("route", page_name); - frm.set_value("success_url", "/" + page_name); - } - }, + title: function(frm) { + if (frm.doc.__islocal) { + var page_name = frm.doc.title.toLowerCase().replace(/ /g, "-"); + frm.set_value("route", page_name); + frm.set_value("success_url", "/" + page_name); + } + }, - doc_type: function(frm) { - frappe.web_form.set_fieldname_select(frm); - } + doc_type: function(frm) { + frappe.web_form.set_fieldname_select(frm); + } }); frappe.ui.form.on("Web Form Field", { - fieldtype: function(frm, doctype, name) { - var doc = frappe.get_doc(doctype, name); - if (fieldtype === 'Section Break' || fieldtype === 'Section Break') { - doc.fieldname = ''; - frm.refresh_field("web_form_fields"); - } - }, - fieldname: function(frm, doctype, name) { - var doc = frappe.get_doc(doctype, name); - var df = $.map(frappe.get_doc("DocType", frm.doc.doc_type).fields, function(d) { - return doc.fieldname == d.fieldname ? d : null; - })[0]; + fieldtype: function(frm, doctype, name) { + var doc = frappe.get_doc(doctype, name); + if (['Section Break', 'Column Break', 'Page Break'].includes(doc.fieldtype)) { + doc.fieldname = ''; + frm.refresh_field("web_form_fields"); + } + }, + fieldname: function(frm, doctype, name) { + var doc = frappe.get_doc(doctype, name); + var df = $.map(frappe.get_doc("DocType", frm.doc.doc_type).fields, function(d) { + return doc.fieldname == d.fieldname ? d : null; + })[0]; - doc.label = df.label; - doc.reqd = df.reqd; - doc.options = df.options; - doc.fieldtype = frappe.meta.get_docfield("Web Form Field", "fieldtype") - .options.split("\n").indexOf(df.fieldtype) === -1 ? "Data" : df.fieldtype; - doc.description = df.description; - doc["default"] = df["default"]; + doc.label = df.label; + doc.reqd = df.reqd; + doc.options = df.options; + doc.fieldtype = frappe.meta.get_docfield("Web Form Field", "fieldtype") + .options.split("\n").indexOf(df.fieldtype) === -1 ? "Data" : df.fieldtype; + doc.description = df.description; + doc["default"] = df["default"]; - } + } }); \ No newline at end of file diff --git a/frappe/website/doctype/website_theme/website_theme.js b/frappe/website/doctype/website_theme/website_theme.js index f538359431..c3cabb6237 100644 --- a/frappe/website/doctype/website_theme/website_theme.js +++ b/frappe/website/doctype/website_theme/website_theme.js @@ -1,7 +1,6 @@ // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // MIT License. See license.txt - - +/* globals jscolor */ frappe.provide("frappe.website_theme"); $.extend(frappe.website_theme, { color_variables: ["background_color", "top_bar_color", "top_bar_text_color", diff --git a/frappe/website/js/web_form.js b/frappe/website/js/web_form.js index aa5d35955e..4524730a25 100644 --- a/frappe/website/js/web_form.js +++ b/frappe/website/js/web_form.js @@ -17,7 +17,7 @@ frappe.ready(function() { var reader = new FileReader(); if(input.files.length) { - file = input.files[0]; + var file = input.files[0]; frappe.file_reading = true; reader.onload = function(e) { input.filedata = { @@ -35,8 +35,7 @@ frappe.ready(function() { // clear attachment $(input).val(''); $(input).attr('data-value', ''); - - }; + } frappe.file_reading = false; } @@ -61,7 +60,7 @@ frappe.ready(function() { var maxlength = parseInt($(this).attr('maxlength')); if(maxlength && (($(this).val() || '') + '').length > maxlength-1) { $(this).val($(this).val().substr(0, maxlength-1)); - }; + } }).each(function() { set_mandatory_class(this); }); // if changed, set dirty flag @@ -104,7 +103,7 @@ frappe.ready(function() { return false; }); - show_slide = function(idx) { + var show_slide = function(idx) { // hide all sections $('.web-form-page').addClass('hidden'); @@ -175,7 +174,7 @@ frappe.ready(function() { // check if child table has value var has_value = false; - for(key in d) { + for(var key in d) { if(typeof d[key]==='string') { d[key] = d[key].trim(); } @@ -286,9 +285,9 @@ frappe.ready(function() { $(".comments, .introduction, .page-head").addClass("hide"); scroll(0, 0); set_message(frappe.success_link, true); - } else { + } else { set_message(__('Saved')); - } + } if(frappe.is_new && frappe.login_required) { // reload page (with ID) @@ -298,13 +297,13 @@ frappe.ready(function() { // redirect to payment window.location.href = data.message; } - } else { + } else { frappe.msgprint(__('There were errors. Please report this.')); - } - }, - always: function() { - window.saving = false; - } + } + }, + always: function() { + window.saving = false; + } }); return true; } diff --git a/frappe/website/js/website.js b/frappe/website/js/website.js index cfbe6beb86..5f7fd4d634 100644 --- a/frappe/website/js/website.js +++ b/frappe/website/js/website.js @@ -159,12 +159,9 @@ $.extend(frappe, { .html('

' +text+'
').appendTo(document.body); }, - hide_message: function(text) { - $('.message-overlay').remove(); - }, get_sid: function() { var sid = getCookie("sid"); - return sid && sid!=="Guest"; + return sid && sid !== "Guest"; }, get_modal: function(title, body_html) { var modal = $('