[fix] Preserve field's order in print format builder column selector

This commit is contained in:
Nabin Hait 2015-12-10 12:57:33 +05:30
parent 80d11cbb23
commit d8d64e0478
2 changed files with 26 additions and 5 deletions

View file

@ -483,10 +483,33 @@ frappe.PrintFormatBuilder = Class.extend({
});
var $body = $(d.body);
var doc_fields = frappe.get_meta(doctype).fields;
var docfields_by_name = {};
// docfields by fieldname
$.each(doc_fields, function(j, f) {
if(f) docfields_by_name[f.fieldname] = f;
})
// add field which are in column_names first to preserve order
var fields = [];
$.each(column_names, function(i, v) {
if(in_list(Object.keys(docfields_by_name), v)) {
fields.push(docfields_by_name[v]);
}
})
// add remaining fields
$.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);
}
})
// render checkboxes
$(frappe.render_template("print_format_builder_column_selector", {
fields: frappe.get_meta(doctype).fields,
fields: fields,
column_names: column_names,
widths: widths
})).appendTo(d.body);

View file

@ -6,8 +6,7 @@
</div>
<div class="column-selector-list">
{% for (i=0; i < fields.length; i++) { var f = fields[i]; %}
{% if(!in_list(["Section Break", "Column Break"]) && f.label) {
var selected = in_list(column_names, f.fieldname) %}
{% var selected = in_list(column_names, f.fieldname) %}
<div class="row column-selector-row">
<div class="col-sm-6">
<div class="checkbox">
@ -27,6 +26,5 @@
{%= selected ? "" : "disabled" %}>
</div>
</div>
{% } %}
{% } %}
</div>