|
|
|
|
@ -64,9 +64,15 @@ class FilterModel {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
updateFilter(value) {
|
|
|
|
|
updateFilter(value, silent) {
|
|
|
|
|
this._filter = value;
|
|
|
|
|
this._update();
|
|
|
|
|
if (!silent) {
|
|
|
|
|
this._update();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
get filterRow() {
|
|
|
|
|
return this._filter;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -75,27 +81,31 @@ class FilterController {
|
|
|
|
|
this._model = filterModel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
updateFilter(value) {
|
|
|
|
|
updateFilter(value, silent) {
|
|
|
|
|
if (value.length) {
|
|
|
|
|
value = value.split('|').map(x => '/d:data/' + x).join('|').toLowerCase().replace(/-/g, "_");
|
|
|
|
|
try {
|
|
|
|
|
document.evaluate(value, document, () => 'ns');
|
|
|
|
|
}
|
|
|
|
|
catch (error) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
this._model.updateFilter(value);
|
|
|
|
|
this._model.updateFilter(value, silent);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
this._model.updateFilter(value);
|
|
|
|
|
this._model.updateFilter('', silent);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
deactivate() {
|
|
|
|
|
this._model.active = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
get filterRow() {
|
|
|
|
|
return this._model.filterRow;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -109,14 +119,14 @@ class FilterView {
|
|
|
|
|
this._filterString.on('keypress keydown keyup', (e) => e.stopPropagation());
|
|
|
|
|
this._filterString.on('change', (e) => {
|
|
|
|
|
let value = $.trim(e.target.value);
|
|
|
|
|
if (value.length) {
|
|
|
|
|
value = value.split('|').map(x => '/d:data/' + x).join('|').toLowerCase().replace(/-/g, "_");
|
|
|
|
|
}
|
|
|
|
|
if (this._controller.updateFilter(value)) {
|
|
|
|
|
|
|
|
|
|
if (this._controller.updateFilter(value, false)) {
|
|
|
|
|
this._filterString.css('color', 'green');
|
|
|
|
|
setURISearchParameter('filter', value || null);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
this._filterString.css('color', 'red');
|
|
|
|
|
setURISearchParameter('filter', null);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@ -127,9 +137,21 @@ class FilterView {
|
|
|
|
|
|
|
|
|
|
this._resetFilterButton.on('click', () => {
|
|
|
|
|
this._filterString.prop('value', '');
|
|
|
|
|
this._controller.updateFilter('');
|
|
|
|
|
this._controller.updateFilter('', false);
|
|
|
|
|
setURISearchParameter('filter', null);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (getURISearchParameter('filter')) {
|
|
|
|
|
let value = getURISearchParameter('filter');
|
|
|
|
|
this._filterString.prop('value', value);
|
|
|
|
|
if (this._controller.updateFilter(value, true)) {
|
|
|
|
|
this._filterString.css('color', 'green');
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
setURISearchParameter('filter', null);
|
|
|
|
|
this._filterString.prop('value', '');
|
|
|
|
|
this._filterString.css('color', 'red');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|