Merge branch 'master' of gitlab.cip.ifi.lmu.de:jost/UniWorX

This commit is contained in:
Steffen Jost 2019-06-06 13:35:49 +02:00
commit ebcafcc71b

View File

@ -13,7 +13,6 @@ const ASYNC_TABLE_INITIALIZED_CLASS = 'async-table--initialized';
const ASYNC_TABLE_LOADING_CLASS = 'async-table--loading'; const ASYNC_TABLE_LOADING_CLASS = 'async-table--loading';
const ASYNC_TABLE_FILTER_FORM_SELECTOR = '.table-filter-form'; const ASYNC_TABLE_FILTER_FORM_SELECTOR = '.table-filter-form';
const ASYNC_TABLE_FILTER_FORM_ID_SELECTOR = '[name="form-identifier"]';
@Utility({ @Utility({
selector: '[uw-async-table]', selector: '[uw-async-table]',
@ -213,7 +212,7 @@ export class AsyncTable {
} }
_updateFromTableFilter(tableFilterForm) { _updateFromTableFilter(tableFilterForm) {
const url = this._serializeTableFilterToURL(); const url = this._serializeTableFilterToURL(tableFilterForm);
let callback = null; let callback = null;
const focusedInput = tableFilterForm.querySelector(':focus, :active'); const focusedInput = tableFilterForm.querySelector(':focus, :active');
@ -237,40 +236,17 @@ export class AsyncTable {
this._updateTableFrom(url, callback); this._updateTableFrom(url, callback);
} }
_serializeTableFilterToURL() { _serializeTableFilterToURL(tableFilterForm) {
const url = new URL(getLocalStorageParameter('currentTableUrl') || window.location.href); const url = new URL(getLocalStorageParameter('currentTableUrl') || window.location.href);
const formData = new FormData(tableFilterForm);
const formIdElement = this._element.querySelector(ASYNC_TABLE_FILTER_FORM_ID_SELECTOR); for (var k of url.searchParams.keys()) {
if (!formIdElement) { url.searchParams.delete(k);
// cannot serialize the filter form without an identifier
return;
} }
url.searchParams.set('form-identifier', formIdElement.value); for (var kv of formData.entries()) {
url.searchParams.set('_hasdata', 'true'); url.searchParams.append(encodeURIComponent(kv[0]), encodeURIComponent(kv[1]));
url.searchParams.set(this._asyncTableId + '-page', '0'); }
this._tableFilterInputs.search.forEach(function(input) {
url.searchParams.set(input.name, input.value);
});
this._tableFilterInputs.input.forEach(function(input) {
url.searchParams.set(input.name, input.value);
});
this._tableFilterInputs.change.forEach(function(input) {
if (input.checked) {
url.searchParams.set(input.name, input.value);
}
});
this._tableFilterInputs.select.forEach(function(select) {
const options = Array.from(select.querySelectorAll('option'));
const selected = options.find((option) => option.selected);
if (selected) {
url.searchParams.set(select.name, selected.value);
}
});
return url; return url;
} }