mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-06-27 13:22:06 +02:00
Fix select all did not respect some filters
Certain sequence of applying filters could trigger long task & get all IDs, which failed.
This commit is contained in:
parent
de9c1f5c48
commit
7c3aaba861
@ -668,15 +668,17 @@ export class et2_dataview_selectionManager
|
|||||||
|
|
||||||
_query_ranges(queryRanges)
|
_query_ranges(queryRanges)
|
||||||
{
|
{
|
||||||
var that = this;
|
let that = this;
|
||||||
var record_count = 0;
|
let record_count = 0;
|
||||||
var range_index = 0;
|
let range_index = 0;
|
||||||
var range_count = queryRanges.length;
|
let range_count = queryRanges.length;
|
||||||
var cont = true;
|
let cont = true;
|
||||||
var fetchPromise = new Promise(function(resolve)
|
let fetchResolver;
|
||||||
|
let fetchPromise = new Promise(function(resolve)
|
||||||
{
|
{
|
||||||
resolve();
|
fetchResolver = resolve;
|
||||||
});
|
});
|
||||||
|
let fetchList = [fetchPromise];
|
||||||
// Found after dialog loads
|
// Found after dialog loads
|
||||||
var progressbar;
|
var progressbar;
|
||||||
|
|
||||||
@ -696,27 +698,27 @@ export class et2_dataview_selectionManager
|
|||||||
}],
|
}],
|
||||||
width: 300
|
width: 300
|
||||||
});
|
});
|
||||||
(this._context._widget.getDOMNode() || document.body).appendChild(dialog);
|
(this._context._widget.getDOMNode() || document.body).append(dialog);
|
||||||
dialog.updateComplete.then(() =>
|
dialog.updateComplete.then(() =>
|
||||||
{
|
{
|
||||||
dialog.template.DOMContainer.addEventListener('load', function()
|
dialog.template.DOMContainer.addEventListener('load', () =>
|
||||||
{
|
{
|
||||||
// Get access to template widgets
|
// Get access to template widgets
|
||||||
progressbar = dialog.template.widgetContainer.getWidgetById('progressbar');
|
progressbar = dialog.template.widgetContainer.getWidgetById('progressbar');
|
||||||
});
|
let rangePromise = fetchPromise;
|
||||||
});
|
|
||||||
|
|
||||||
for(var i = 0; i < queryRanges.length; i++)
|
for(var i = 0; i < queryRanges.length; i++)
|
||||||
{
|
{
|
||||||
if(record_count + (queryRanges[i].bottom - queryRanges[i].top + 1) > that.MAX_SELECTION)
|
if(record_count + (queryRanges[i].bottom - queryRanges[i].top + 1) > et2_dataview_selectionManager.MAX_SELECTION)
|
||||||
{
|
{
|
||||||
egw.message(egw.lang('Too many rows selected.<br />Select all, or less than %1 rows', that.MAX_SELECTION));
|
egw.message(egw.lang('Too many rows selected.<br />Select all, or less than %1 rows', et2_dataview_selectionManager.MAX_SELECTION));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
record_count += (queryRanges[i].bottom - queryRanges[i].top + 1);
|
record_count += (queryRanges[i].bottom - queryRanges[i].top + 1);
|
||||||
fetchPromise = fetchPromise.then((function()
|
// We want to chain these one after the other, not fire them all right away
|
||||||
|
rangePromise = rangePromise.then((function()
|
||||||
{
|
{
|
||||||
// Check for abort
|
// Check for abort
|
||||||
if(!cont)
|
if(!cont)
|
||||||
@ -740,17 +742,23 @@ export class et2_dataview_selectionManager
|
|||||||
egwSetBit(entry.state, EGW_AO_STATE_SELECTED, true));
|
egwSetBit(entry.state, EGW_AO_STATE_SELECTED, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
progressbar.set_value(100*(++range_index/range_count));
|
progressbar.set_value(100 * (++range_index / range_count));
|
||||||
resolve();
|
resolve();
|
||||||
}, that);
|
}, that);
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
}).bind(queryRanges[i]));
|
}).bind(queryRanges[i]));
|
||||||
|
fetchList.push(rangePromise);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fetchPromise.finally(function() {
|
|
||||||
|
// Start the first fetch
|
||||||
|
fetchResolver();
|
||||||
|
Promise.all(fetchList).finally(function()
|
||||||
|
{
|
||||||
dialog.close();
|
dialog.close();
|
||||||
});
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
</et2-vbox>
|
</et2-vbox>
|
||||||
</et2-hbox>
|
</et2-hbox>
|
||||||
<styles>
|
<styles>
|
||||||
.long_task .ui-dialog-content {
|
#long_task > div {
|
||||||
width: 90%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.long_task .log {
|
.long_task .log {
|
||||||
max-height: 10em;
|
max-height: 10em;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user