feat: add html template for comparator

This commit is contained in:
Gursheen Anand 2023-08-18 11:04:31 +05:30
parent ef7af5e849
commit c3d0ab5f9a
2 changed files with 109 additions and 0 deletions

View file

@ -0,0 +1,74 @@
<div>
<div class="p-2">
{% if documents.length > 1 %}
<p>Documents to Compare : <b>{{ documents.length }}</b></p>
{% else %}
<p>Documents to Compare : <b>{{ documents.length - 1 }}</b></p>
{% endif %}
</div>
{% var field_keys = Object.keys(changed).sort(); %}
{% if field_keys.length > 0 %}
<div class="p-2">
<h5> Changes </h5>
<table class="table table-bordered">
<thead>
<th> Fields </th>
{% for doc in documents %}
<th>{{ doc }}</th>
{% endfor %}
</thead>
<tbody>
{% for fieldname in field_keys %}
<tr>
<td> {{ fieldname }} </td>
{% var values = changed[fieldname] %}
{% for value in values %}
<td>{{ value }}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
{% var tables = Object.keys(row_changed).sort(); %}
{% if tables.length > 0 %}
<div class="p-2">
<h5> Rows Updated </h5>
<table class="table table-bordered">
<thead>
<th> Fields </th>
{% for doc in documents %}
<th>{{ doc }}</th>
{% endfor %}
</thead>
<tbody>
{% for table in tables %}
<tr>
<tr><td><b>{{ table }}</b></td></tr>
{% var row_index = row_changed[table]["index"] %}
<tr><td><b>idx : {{ row_index }}</b></td></tr>
{% var fields = Object.keys(row_changed[table]).sort(); %}
{% for field in fields %}
{% if field != "index" %}
<tr>
<td>{{ field }}</td>
{% var values = row_changed[table][field] %}
{% for value in values %}
<td> {{ value }} </td>
{% endfor %}
</tr>
{% endfor %}
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
</div>

View file

@ -0,0 +1,35 @@
// Copyright (c) 2023, Frappe Technologies and contributors
// For license information, please see license.txt
frappe.ui.form.on("Document Comparator", {
refresh(frm) {
frm.disable_save();
frm.set_query("doctype_name", () => {
return {
filters: {
track_changes: 1,
},
};
});
frm.page.set_primary_action("Compare", () => {
frm.call({
doc: frm.doc,
method: "compare_document",
callback: function (r) {
let document_names = r.message[0];
let changed_fields = r.message[1];
let render_dict = {
documents: document_names,
changed: changed_fields.changed,
row_changed: changed_fields.row_changed,
};
$(frappe.render_template("document_comparator", render_dict)).appendTo(
frm.fields_dict.version_table.$wrapper.empty()
);
},
});
});
},
});