Browse Source

[fix] Kanban save_filters, set_title (#2637)

* [wip] save filters fix

* [fix] save_filters

* set_title on refresh
version-14
Faris Ansari 8 years ago
committed by Rushabh Mehta
parent
commit
54d7b82b1a
4 changed files with 61 additions and 21 deletions
  1. +8
    -1
      frappe/desk/doctype/kanban_board/kanban_board.py
  2. +11
    -0
      frappe/public/js/frappe/list/doclistview.js
  3. +0
    -1
      frappe/public/js/frappe/list/list_sidebar.js
  4. +42
    -19
      frappe/public/js/frappe/views/kanban/kanban_view.js

+ 8
- 1
frappe/desk/doctype/kanban_board/kanban_board.py View File

@@ -160,4 +160,11 @@ def set_indicator(board_name, column_name, indicator):
column.indicator = indicator
board.save()
return board
return board


@frappe.whitelist()
def save_filters(board_name, filters):
'''Save filters silently'''
frappe.db.set_value('Kanban Board', board_name, 'filters',
filters, update_modified=False)

+ 11
- 0
frappe/public/js/frappe/list/doclistview.js View File

@@ -139,9 +139,18 @@ frappe.views.DocListView = frappe.ui.Listing.extend({
this.setup_filterable();
this.init_filters();
this.init_sort_selector();
this.set_title();
this.init_headers();
},

set_title: function() {
if(this.current_view==='Kanban') {
this.page.set_title(this.kanban_board);
} else {
this.page.set_title(__(this.doctype));
}
},

init_headers: function() {
this.page.main.find(".list-headers").empty();

@@ -350,6 +359,7 @@ frappe.views.DocListView = frappe.ui.Listing.extend({

// if view has changed, re-render header
if(this.current_view !== this.last_view) {
this.set_title();
this.init_headers();
this.dirty = true;
}
@@ -357,6 +367,7 @@ frappe.views.DocListView = frappe.ui.Listing.extend({
// if kanban board changed, set filters
if(this.current_view==="Kanban" &&
this.kanban_board!==this.last_kanban_board) {
this.set_title();
this.init_headers();
this.set_kanban_board_filters();
return;


+ 0
- 1
frappe/public/js/frappe/list/list_sidebar.js View File

@@ -51,7 +51,6 @@ frappe.views.ListSidebar = Class.extend({

if(this.current_view === 'Kanban') {
this.kanban_board = route[3];
this.page.set_title(this.doctype +" - "+ this.kanban_board);
}
}



+ 42
- 19
frappe/public/js/frappe/views/kanban/kanban_view.js View File

@@ -66,22 +66,28 @@ frappe.provide("frappe.views");
});
},
set_filter_state: function (updater) {
updater.set({
filters_modified: is_filters_modified(this.board, this.cur_list)
});
is_filters_modified(this.board, this.cur_list)
.then(function(flag) {
updater.set({
filters_modified: flag
});
});
},
save_filters: function (updater) {
var filters = JSON.stringify(this.cur_list.filter_list.get_filters());
frappe.db.set_value(
'Kanban Board', this.board.name,
'filters', filters,
function() {
updater.set({ filters_modified: false });
show_alert({
message: __("Filters saved"),
indicator: 'green'
}, 1);
});
frappe.call({
method: method_prefix + 'save_filters',
args: {
board_name: this.board.name,
filters: filters
}
}).then(function(r) {
updater.set({ filters_modified: false });
show_alert({
message: __('Filters saved'),
indicator: 'green'
}, 0.5);
});
},
add_card: function (updater, card_title, column_title) {
var doc = frappe.model.get_new_doc(this.doctype);
@@ -285,13 +291,15 @@ frappe.provide("frappe.views");
}

function bind_save_filter() {
var set_filter_state = function () {
fluxify.doAction('set_filter_state');
}
if(isBound(self.cur_list.wrapper, 'render-complete', set_filter_state)) return;

store.on('change:filters_modified', function (modified) {
if(modified) fluxify.doAction('save_filters');
});

self.cur_list.wrapper.on('render-complete', function () {
fluxify.doAction('set_filter_state');
});
self.cur_list.wrapper.on('render-complete', set_filter_state);
}

function setup_restore_columns() {
@@ -959,8 +967,12 @@ frappe.provide("frappe.views");
}

function is_filters_modified(board, cur_list) {
var list_filters = JSON.stringify(cur_list.filter_list.get_filters());
return list_filters !== board.filters;
return new Promise(function(resolve, reject) {
setTimeout(function() {
var list_filters = JSON.stringify(cur_list.filter_list.get_filters());
resolve(list_filters !== board.filters);
}, 2000);
})
}

function is_active_column(col) {
@@ -1007,4 +1019,15 @@ frappe.provide("frappe.views");
callback(indicators);
});
}

function isBound(el, event, fn) {
var events = $._data(el[0], 'events');
var handlers = events[event];
var flag = false;
handlers.forEach(function(h) {
if(h.handler.name === fn.name)
flag = true;
});
return flag;
}
})();

Loading…
Cancel
Save