Move selection logic to another class

This commit is contained in:
Ludovic Stephan 2017-04-05 11:26:33 -03:00
parent 8d13c0a4bb
commit 88f7ea941d

View file

@ -4,7 +4,7 @@ class KHistory {
return { from: moment().subtract(1, 'days').format('YYYY-MM-DD HH:mm:ss'), };
}
constructor(display_options) {
constructor(display_options, noselect) {
this.templates = {
'purchase': '<div class="ope"><span class="amount"></span><span class="infos1"></span><span class="infos2"></span><span class="addcost"></span><span class="canceled"></span></div>',
'specialope': '<div class="ope"><span class="amount"></span><span class="infos1"></span><span class="infos2"></span><span class="addcost"></span><span class="canceled"></span></div>',
@ -21,7 +21,10 @@ class KHistory {
this.display_options = display_options || {};
this._init_selection();
if (!noselect) {
this.selection = new KHistorySelection(this);
}
this._init_events();
}
@ -45,53 +48,25 @@ class KHistory {
$('#nb_opes').text(nb_opes);
}
_init_selection() {
this._$container.selectable({
filter: 'div.opegroup, div.ope',
selected: function(e, ui) {
$(ui.selected).each(function() {
if ($(this).hasClass('opegroup')) {
$(this).parent().find('.ope').addClass('ui-selected');
}
});
},
unselected: function(e, ui) {
$(ui.unselected).each(function() {
if ($(this).hasClass('opegroup')) {
$(this).parent().find('.ope').removeClass('ui-selected');
}
});
},
});
}
_init_events() {
var that = this;
$(document).on('keydown', function(e) {
if (e.keyCode == 46) {
if (e.keyCode == 46 && that.selection) {
//DEL key ; we delete the selected operations (if any)
var to_cancel = {'transfers': [], 'opes': [],};
that._$container.find('.ope.ui-selected').each(function() {
var [type, id] = $(this).parent().attr('id').split('-');
var to_cancel = that.selection.get_selected();
if (type === 'transfer')
to_cancel['transfers'].push(id);
else
to_cancel['opes'].push(id);
});
if (to_cancel['opes'].length > 0 || to_cancel['transfers'].length > 0)
that.cancel_operations(to_cancel);
}
});
}
cancel_operations(to_cancel, password='') {
cancel_operations(to_cancel) {
if (window.kpsul) {
var on_success = kpsul._env.coolReset;
var focus_next = kpsul.account_manager._$input_trigramme;
var focus_next = kpsul;
} else {
var on_success = () => this._$container.find('.ui-selected')
.removeClass('.ui-selected') ;
var on_success = () => this.selection.reset()
var focus_next = undefined;
}
@ -147,7 +122,6 @@ class KHistory {
}
update_data(data) {
//Filter opegroups before ?
var opegroups = data['opegroups'];
var opes = data['opes'];
@ -181,3 +155,50 @@ class KHistory {
$('#nb_opes').text(nb_opes);
}
}
class KHistorySelection {
constructor(history) {
this._$container = history._$container;
this._init();
}
_init() {
this._$container.selectable({
filter: 'div.opegroup, div.ope',
selected: function(e, ui) {
$(ui.selected).each(function() {
if ($(this).hasClass('opegroup')) {
$(this).parent().find('.ope').addClass('ui-selected');
}
});
},
unselected: function(e, ui) {
$(ui.unselected).each(function() {
if ($(this).hasClass('opegroup')) {
$(this).parent().find('.ope').removeClass('ui-selected');
}
});
},
});
}
get_selected() {
var selected = {'transfers': [], 'opes': [],};
this._$container.find('.ope.ui-selected').each(function() {
var [type, id] = $(this).parent().attr('id').split('-');
if (type === 'transfer')
selected['transfers'].push(id);
else
selected['opes'].push(id);
});
return selected;
}
reset() {
this._$container.find('.ui-selected')
.removeClass('.ui-selected');
}
}