Fix stage filter (#5023)

* Fix stage filter

* Update js

* Update js

* Lint

Co-authored-by: Frederik Hudák <frederik.hudak@sap.com>
This commit is contained in:
Marc Bernard 2021-10-06 14:15:02 -04:00 committed by GitHub
parent 4a5cf13eca
commit bdafff8581
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -639,10 +639,12 @@ StageHelper.prototype.applyFilterValue = function(sFilterValue) {
StageHelper.prototype.applyFilterToRow = function (row, filter) {
// Collect data cells
var targets = this.filterTargets.map(function(attr) {
// Get the innermost tag with the text we want to filter
// <td>text</td>: elem = td-tag
// <td><span><i></i><a>text</a></span></td>: elem = a-tag
var elem = row.cells[this.colIndex[attr]];
if (elem.firstChild && elem.firstChild.tagName === "SPAN") elem = elem.firstChild;
if (elem.firstChild && elem.firstChild.tagName === "I") elem = elem.nextChild;
if (elem.firstChild && elem.firstChild.tagName === "A") elem = elem.firstChild;
var elemA = elem.getElementsByTagName("A")[0];
if (elemA) elem = elemA;
return {
elem: elem,
plainText: elem.innerText.replace(/ /g, "\u00a0"), // without tags, with encoded spaces
@ -655,8 +657,10 @@ StageHelper.prototype.applyFilterToRow = function (row, filter) {
// Apply filter to cells, mark filtered text
for (var i = targets.length - 1; i >= 0; i--) {
var target = targets[i];
// Ignore case of filter
var regFilter = new RegExp("("+filter+")", "gi");
target.newHtml = (filter)
? target.plainText.replace(filter, "<mark>"+filter+"</mark>")
? target.plainText.replace(regFilter, "<mark>$1</mark>")
: target.plainText;
target.isChanged = target.newHtml !== target.curHtml;
isVisible = isVisible || !filter || target.newHtml !== target.plainText;