Listview fixes (#5136)

- Remove freeze
- Save user_settings only if changed
This commit is contained in:
Faris Ansari 2018-03-08 14:19:54 +05:30 committed by Rushabh Mehta
parent f98d782055
commit 2db3065908
3 changed files with 36 additions and 13 deletions

View file

@ -335,11 +335,11 @@ frappe.views.BaseList = class BaseList {
freeze_message: this.freeze_message || (__('Loading') + '...')
}).then(r => {
// render
this.freeze(false);
this.prepare_data(r);
this.toggle_result_area();
this.before_render();
this.render();
this.freeze(false);
});
}

View file

@ -61,7 +61,6 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList {
// build menu items
this.menu_items = this.menu_items.concat(this.get_menu_items());
this.freeze_on_refresh = true;
this.actions_menu_items = this.get_actions_menu_items();
this.patch_refresh_and_load_lib();
@ -150,6 +149,13 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList {
this.settings.onload && this.settings.onload(this);
}
setup_freeze_area() {
this.$freeze =
$(`<div class="freeze flex justify-center align-center text-muted">${__('Loading')}...</div>`)
.hide();
this.$result.append(this.$freeze);
}
setup_footnote_area() {
const match_rules_list = frappe.perm.get_match_rules(this.doctype);
@ -227,6 +233,12 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList {
</div>`;
}
freeze(show) {
this.$result.find('.list-header-meta').html(__('Refreshing') + '...');
this.$result.find('.checkbox-actions').toggle(show);
this.$result.find('.list-header-subject').toggle(!show);
}
get_args() {
const args = super.get_args();
@ -263,11 +275,15 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList {
render() {
if (this.data.length > 0) {
const html = `
${this.get_header_html()}
${this.data.map(doc => this.get_list_row_html(doc)).join('')}
`;
this.$result.html(html);
this.$result.find('.list-row-container').remove();
if (this.$result.find('.list-row-head').length === 0) {
// append header once
this.$result.prepend(this.get_header_html());
}
// append rows
this.$result.append(
this.data.map(doc => this.get_list_row_html(doc)).join('')
);
}
this.render_count();
this.render_tags();

View file

@ -6,16 +6,23 @@ $.extend(frappe.model.user_settings, {
.then(r => JSON.parse(r.message || '{}'));
},
save: function(doctype, key, value) {
var user_settings = frappe.model.user_settings[doctype] || {};
const old_user_settings = frappe.model.user_settings[doctype] || {};
const new_user_settings = $.extend(true, {}, old_user_settings); // deep copy
if ($.isPlainObject(value)) {
user_settings[key] = user_settings[key] || {};
$.extend(user_settings[key], value);
new_user_settings[key] = new_user_settings[key] || {};
$.extend(new_user_settings[key], value);
} else {
user_settings[key] = value;
new_user_settings[key] = value;
}
return this.update(doctype, user_settings);
const a = JSON.stringify(old_user_settings);
const b = JSON.stringify(new_user_settings);
if (a !== b) {
// update if changed
return this.update(doctype, new_user_settings);
}
return Promise.resolve();
},
remove: function(doctype, key) {
var user_settings = frappe.model.user_settings[doctype] || {};
@ -33,7 +40,7 @@ $.extend(frappe.model.user_settings, {
callback: function(r) {
frappe.model.user_settings[doctype] = r.message;
}
})
});
}
});