Files
erpnext/erpnext/public/js/utils/crm_activities.js
mergify[bot] 7d3d2eb928 ci: add prettier to pre-commit (backport #40206) (#40362)
* ci: add prettier to pre-commit

(cherry picked from commit 2c16036ef3)

* style: format js files

---------

Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
2024-03-11 10:47:18 +05:30

237 lines
5.4 KiB
JavaScript

erpnext.utils.CRMActivities = class CRMActivities {
constructor(opts) {
$.extend(this, opts);
}
refresh() {
var me = this;
$(this.open_activities_wrapper).empty();
let cur_form_footer = this.form_wrapper.find(".form-footer");
// all activities
if (!$(this.all_activities_wrapper).find(".form-footer").length) {
this.all_activities_wrapper.empty();
$(cur_form_footer).appendTo(this.all_activities_wrapper);
// remove frappe-control class to avoid absolute position for action-btn
$(this.all_activities_wrapper).removeClass("frappe-control");
// hide new event button
$(".timeline-actions").find(".btn-default").hide();
// hide new comment box
$(".comment-box").hide();
// show only communications by default
$($(".timeline-content").find(".nav-link")[0]).tab("show");
}
// open activities
frappe.call({
method: "erpnext.crm.utils.get_open_activities",
args: {
ref_doctype: this.frm.doc.doctype,
ref_docname: this.frm.doc.name,
},
callback: (r) => {
if (!r.exc) {
var activities_html = frappe.render_template("crm_activities", {
tasks: r.message.tasks,
events: r.message.events,
});
$(activities_html).appendTo(me.open_activities_wrapper);
$(".open-tasks")
.find(".completion-checkbox")
.on("click", function () {
me.update_status(this, "ToDo");
});
$(".open-events")
.find(".completion-checkbox")
.on("click", function () {
me.update_status(this, "Event");
});
me.create_task();
me.create_event();
}
},
});
}
create_task() {
let me = this;
let _create_task = () => {
const args = {
doc: me.frm.doc,
frm: me.frm,
title: __("New Task"),
};
let composer = new frappe.views.InteractionComposer(args);
composer.dialog.get_field("interaction_type").set_value("ToDo");
// hide column having interaction type field
$(composer.dialog.get_field("interaction_type").wrapper).closest(".form-column").hide();
// hide summary field
$(composer.dialog.get_field("summary").wrapper).closest(".form-section").hide();
};
$(".new-task-btn").click(_create_task);
}
create_event() {
let me = this;
let _create_event = () => {
const args = {
doc: me.frm.doc,
frm: me.frm,
title: __("New Event"),
};
let composer = new frappe.views.InteractionComposer(args);
composer.dialog.get_field("interaction_type").set_value("Event");
$(composer.dialog.get_field("interaction_type").wrapper).hide();
};
$(".new-event-btn").click(_create_event);
}
async update_status(input_field, doctype) {
let completed = $(input_field).prop("checked") ? 1 : 0;
let docname = $(input_field).attr("name");
if (completed) {
await frappe.db.set_value(doctype, docname, "status", "Closed");
this.refresh();
}
}
};
erpnext.utils.CRMNotes = class CRMNotes {
constructor(opts) {
$.extend(this, opts);
}
refresh() {
var me = this;
this.notes_wrapper.find(".notes-section").remove();
let notes = this.frm.doc.notes || [];
notes.sort(function (a, b) {
return new Date(b.added_on) - new Date(a.added_on);
});
let notes_html = frappe.render_template("crm_notes", {
notes: notes,
});
$(notes_html).appendTo(this.notes_wrapper);
this.add_note();
$(".notes-section")
.find(".edit-note-btn")
.on("click", function () {
me.edit_note(this);
});
$(".notes-section")
.find(".delete-note-btn")
.on("click", function () {
me.delete_note(this);
});
}
add_note() {
let me = this;
let _add_note = () => {
var d = new frappe.ui.Dialog({
title: __("Add a Note"),
fields: [
{
label: "Note",
fieldname: "note",
fieldtype: "Text Editor",
reqd: 1,
enable_mentions: true,
},
],
primary_action: function () {
var data = d.get_values();
frappe.call({
method: "add_note",
doc: me.frm.doc,
args: {
note: data.note,
},
freeze: true,
callback: function (r) {
if (!r.exc) {
me.frm.refresh_field("notes");
me.refresh();
}
d.hide();
},
});
},
primary_action_label: __("Add"),
});
d.show();
};
$(".new-note-btn").click(_add_note);
}
edit_note(edit_btn) {
var me = this;
let row = $(edit_btn).closest(".comment-content");
let row_id = row.attr("name");
let row_content = $(row).find(".content").html();
if (row_content) {
var d = new frappe.ui.Dialog({
title: __("Edit Note"),
fields: [
{
label: "Note",
fieldname: "note",
fieldtype: "Text Editor",
default: row_content,
},
],
primary_action: function () {
var data = d.get_values();
frappe.call({
method: "edit_note",
doc: me.frm.doc,
args: {
note: data.note,
row_id: row_id,
},
freeze: true,
callback: function (r) {
if (!r.exc) {
me.frm.refresh_field("notes");
me.refresh();
d.hide();
}
},
});
},
primary_action_label: __("Done"),
});
d.show();
}
}
delete_note(delete_btn) {
var me = this;
let row_id = $(delete_btn).closest(".comment-content").attr("name");
frappe.call({
method: "delete_note",
doc: me.frm.doc,
args: {
row_id: row_id,
},
freeze: true,
callback: function (r) {
if (!r.exc) {
me.frm.refresh_field("notes");
me.refresh();
}
},
});
}
};