1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2024-05-23 16:52:26 +02:00
TableFilter/src/modules/highlightKeywords.js.map
2015-01-11 21:22:52 +11:00

1 line
7.3 KiB
Plaintext

{"version":3,"sources":["src-es6/modules/highlightKeywords.js"],"names":[],"mappings":"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","file":"src-es6/modules/highlightKeywords.js","sourcesContent":["import {Dom} from '../dom';\r\nimport {Str} from '../string';\r\n\r\nexport class HighlightKeyword{\r\n\r\n /**\r\n * HighlightKeyword, highlight matched keyword\r\n * @param {Object} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n var f = tf.fObj;\r\n //defines css class for highlighting\r\n this.highlightCssClass = f.highlight_css_class || 'keyword';\r\n this.highlightedNodes = [];\r\n\r\n this.tf = tf;\r\n }\r\n\r\n /**\r\n * highlight occurences of searched term in passed node\r\n * @param {Node} node\r\n * @param {String} word Searched term\r\n * @param {String} cssClass Css class name\r\n */\r\n highlight(node, word, cssClass){\r\n // Iterate into this nodes childNodes\r\n if(node.hasChildNodes){\r\n var children = node.childNodes;\r\n for(var i=0; i<children.length; i++){\r\n this.highlight(children[i], word, cssClass);\r\n }\r\n }\r\n\r\n if(node.nodeType === 3){\r\n var tempNodeVal = Str.lower(node.nodeValue);\r\n var tempWordVal = Str.lower(word);\r\n if(tempNodeVal.indexOf(tempWordVal) != -1){\r\n var pn = node.parentNode;\r\n if(pn && pn.className != cssClass){\r\n // word not highlighted yet\r\n var nv = node.nodeValue,\r\n ni = tempNodeVal.indexOf(tempWordVal),\r\n // Create a load of replacement nodes\r\n before = Dom.text(nv.substr(0, ni)),\r\n docWordVal = nv.substr(ni,word.length),\r\n after = Dom.text(nv.substr(ni+word.length)),\r\n hiwordtext = Dom.text(docWordVal),\r\n hiword = Dom.create('span');\r\n hiword.className = cssClass;\r\n hiword.appendChild(hiwordtext);\r\n pn.insertBefore(before,node);\r\n pn.insertBefore(hiword,node);\r\n pn.insertBefore(after,node);\r\n pn.removeChild(node);\r\n this.highlightedNodes.push(hiword.firstChild);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Removes highlight to nodes matching passed string\r\n * @param {String} word\r\n * @param {String} cssClass Css class to remove\r\n */\r\n unhighlight(word, cssClass){\r\n var arrRemove = [];\r\n var highlightedNodes = this.highlightedNodes;\r\n for(var i=0; i<highlightedNodes.length; i++){\r\n var n = highlightedNodes[i];\r\n if(!n){\r\n continue;\r\n }\r\n var tempNodeVal = Str.lower(n.nodeValue),\r\n tempWordVal = Str.lower(word);\r\n if(tempNodeVal.indexOf(tempWordVal) !== -1){\r\n var pn = n.parentNode;\r\n if(pn && pn.className === cssClass){\r\n var prevSib = pn.previousSibling,\r\n nextSib = pn.nextSibling;\r\n if(!prevSib || !nextSib){ continue; }\r\n nextSib.nodeValue = prevSib.nodeValue + n.nodeValue +\r\n nextSib.nodeValue;\r\n prevSib.nodeValue = '';\r\n n.nodeValue = '';\r\n arrRemove.push(i);\r\n }\r\n }\r\n }\r\n for(var k=0; k<arrRemove.length; k++){\r\n highlightedNodes.splice(arrRemove[k], 1);\r\n }\r\n }\r\n\r\n /**\r\n * Clear all occurrences of highlighted nodes\r\n */\r\n unhighlightAll(){\r\n if(!this.tf.highlightKeywords || !this.tf.searchArgs){\r\n return;\r\n }\r\n for(var y=0; y<this.tf.searchArgs.length; y++){\r\n this.unhighlight(\r\n this.tf.searchArgs[y], this.highlightCssClass);\r\n }\r\n this.highlightedNodes = [];\r\n }\r\n}"]}