diff options
author | Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org> | 2018-02-09 13:42:21 +0200 |
---|---|---|
committer | Olivier Hallot <olivier.hallot@libreoffice.org> | 2018-02-09 19:01:56 +0100 |
commit | 863b926ed16b372800f75e8ac467afbf3443f61e (patch) | |
tree | decca01dd7a689436b638707b915bfac8f8715f9 /help3xsl/help.js | |
parent | b6bc8c1cfecc55bebff8dc64fddb63e3edc109b5 (diff) |
Tweaked contents expansion
Stopped excluding main items. Highlighted current item.
Harmonised the help.js indentation.
Change-Id: I6b8f22940d077d008662a387071a5d5db04409f7
Reviewed-on: https://gerrit.libreoffice.org/49488
Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
Tested-by: Olivier Hallot <olivier.hallot@libreoffice.org>
Diffstat (limited to 'help3xsl/help.js')
-rw-r--r-- | help3xsl/help.js | 216 |
1 files changed, 103 insertions, 113 deletions
diff --git a/help3xsl/help.js b/help3xsl/help.js index 53d9cda4c3..9329f2d0fb 100644 --- a/help3xsl/help.js +++ b/help3xsl/help.js @@ -6,179 +6,172 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - // Used to set Application in caseinline=APP -function setModule(module){ - if (module === null){module="WRITER";} +function setModule(module) { + if (module === null) { + module = "WRITER"; + } var itemspan = document.getElementsByTagName("span"); var n = itemspan.length; - for (var i = 0; i < n; i++){ - if (itemspan[i].getAttribute("value") == module){ + for (var i = 0; i < n; i++) { + if (itemspan[i].getAttribute("value") == module) { itemspan[i].removeAttribute("hidden"); } } } - // Used to set system in caseinline=SYSTEM -function setSystem(system){ +function setSystem(system) { var itemspan = document.getElementsByTagName("span"); - if (system=== null){system="WIN";} + if (system === null) { + system = "WIN"; + } var n = itemspan.length; - for (var i = 0; i < n; i++){ - if (itemspan[i].getAttribute("value") == system){ + for (var i = 0; i < n; i++) { + if (itemspan[i].getAttribute("value") == system) { itemspan[i].removeAttribute("hidden"); } } } /* add &DbPAR= and &System= to the links in DisplayArea div */ -function fixURL(module, system){ +function fixURL(module, system) { var itemlink = document.getElementById("DisplayArea").getElementsByTagName("a"); - var pSystem = (system=== null) ? "WIN" : system; - var pAppl = (module=== null) ? "WRITER" : module; + var pSystem = (system === null) ? "WIN" : system; + var pAppl = (module === null) ? "WRITER" : module; var n = itemlink.length; - - for (var i = 0; i<n; i++) { + for (var i = 0; i < n; i++) { setURLParam(itemlink[i], pSystem, pAppl); } - } //Set the params inside URL -function setURLParam (itemlink, pSystem, pAppl) { +function setURLParam(itemlink, pSystem, pAppl) { var href = itemlink.getAttribute("href"); - if (href !== null){ + if (href !== null) { // skip external links if (!href.startsWith("http")) { // handle bookmark. if (href.lastIndexOf('#') != -1) { - var postf = href.substring(href.lastIndexOf('#'),href.length); + var postf = href.substring(href.lastIndexOf('#'), href.length); var pref = href.substring(0, href.lastIndexOf('#')); itemlink.setAttribute("href", pref + "?" + '&DbPAR=' + pAppl + '&System=' + pSystem + postf); - }else{ + } else { itemlink.setAttribute("href", href + "?" + '&DbPAR=' + pAppl + '&System=' + pSystem); } } } } -function getSystem (){ - var system="Unknown OS"; - if (navigator.appVersion.indexOf("Win")!=-1) system="WIN"; - if (navigator.appVersion.indexOf("Mac")!=-1) system="MAC"; - if (navigator.appVersion.indexOf("X11")!=-1) system="UNIX"; - if (navigator.appVersion.indexOf("Linux")!=-1) system="UNIX"; +function getSystem() { + var system = "Unknown OS"; + if (navigator.appVersion.indexOf("Win") != -1) system = "WIN"; + if (navigator.appVersion.indexOf("Mac") != -1) system = "MAC"; + if (navigator.appVersion.indexOf("X11") != -1) system = "UNIX"; + if (navigator.appVersion.indexOf("Linux") != -1) system = "UNIX"; return system; } - function getParameterByName(name, url) { if (!url) { url = window.location.href; } - name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"); var results = regex.exec(url); - if (!results) { return null; } - if (!results[2]) { return ''; } - return decodeURIComponent(results[2].replace(/\+/g, " ")); } - // Pagination and fuzzy search var fuseshown = document.getElementsByClassName("fuseshown"); var indexkids = document.getElementsByClassName("index")[0].children; var liElements = Array.prototype.slice.call(fuseshown).map(function(elm) { - var item = elm; - var linktext = item.textContent; - var fuseObject = { item: item, linktext: linktext }; - return fuseObject; + var item = elm; + var linktext = item.textContent; + var fuseObject = { + item: item, + linktext: linktext + }; + return fuseObject; }); - var fuse = new Fuse(liElements, { - keys: ["linktext"], - distance: 60, - location: 0, - threshold: 0.2, - tokenize: true, - matchAllTokens: true, - maxPatternLength: 24, - minMatchCharLength: 2 + keys: ["linktext"], + distance: 60, + location: 0, + threshold: 0.2, + tokenize: true, + matchAllTokens: true, + maxPatternLength: 24, + minMatchCharLength: 2 }); +var modules = ['CALC', 'WRITER', 'IMPRESS', 'DRAW', 'BASE', 'MATH', 'CHART', 'BASIC', 'SHARED']; -var modules = [ 'CALC', 'WRITER', 'IMPRESS', 'DRAW', 'BASE', 'MATH', 'CHART', 'BASIC', 'SHARED' ]; -function addIds() { - for (var i = 0, len = indexkids.length; i < len; i++) { - indexkids[i].removeAttribute("id"); - } - modules.forEach(function(module) { - var fuseshownModule = document.getElementsByClassName("fuseshown " + module)[0]; - if(typeof fuseshownModule !== 'undefined') { fuseshownModule.setAttribute("id", module); } - }); +function addIds() { + for (var i = 0, len = indexkids.length; i < len; i++) { + indexkids[i].removeAttribute("id"); + } + modules.forEach(function(module) { + var fuseshownModule = document.getElementsByClassName("fuseshown " + module)[0]; + if (typeof fuseshownModule !== 'undefined') { + fuseshownModule.setAttribute("id", module); + } + }); } - var search = document.getElementById('search-bar'); var filter = function() { - var target = search.value.trim(); - if (target.length < 1) { + var target = search.value.trim(); + if (target.length < 1) { + liElements.forEach(function(obj) { + obj.item.classList.add('fuseshown'); + obj.item.classList.remove('fusehidden'); + }); + Paginator(document.getElementsByClassName("index")[0]); + addIds(); + return; + } + var results = fuse.search(target); liElements.forEach(function(obj) { + obj.item.classList.add('fusehidden'); + obj.item.classList.remove('fuseshown'); + }); + results.forEach(function(obj) { obj.item.classList.add('fuseshown'); obj.item.classList.remove('fusehidden'); }); Paginator(document.getElementsByClassName("index")[0]); addIds(); - return; - } - var results = fuse.search(target); - - liElements.forEach(function(obj) { - obj.item.classList.add('fusehidden'); - obj.item.classList.remove('fuseshown'); - }); - results.forEach(function(obj) { - obj.item.classList.add('fuseshown'); - obj.item.classList.remove('fusehidden'); - }); - - Paginator(document.getElementsByClassName("index")[0]); - addIds(); }; function debounce(fn, wait) { - var timeout; - return function () { - clearTimeout(timeout); - timeout = setTimeout(function () { - fn.apply(this, arguments); - }, (wait || 150)); - }; + var timeout; + return function() { + clearTimeout(timeout); + timeout = setTimeout(function() { + fn.apply(this, arguments); + }, (wait || 150)); + }; } - Paginator(document.getElementsByClassName("index")[0]); search.addEventListener('keyup', debounce(filter, 300)); addIds(); - // copy useful content to clipboard on mouse click var copyable = document.getElementsByClassName("input"); - for (var i = 0, len = copyable.length; i < len; i++) { (function() { var item = copyable[i]; + function changeColor(item, color, colorToChangeBackTo) { - item.style.backgroundColor = color; - setTimeout(function() { item.style.backgroundColor = colorToChangeBackTo; }, 150); + item.style.backgroundColor = color; + setTimeout(function() { + item.style.backgroundColor = colorToChangeBackTo; + }, 150); } - item.onclick = function() { document.execCommand("copy"); changeColor(item, "#18A303", "transparent"); }; - item.addEventListener("copy", function(event) { event.preventDefault(); if (event.clipboardData) { @@ -187,39 +180,36 @@ for (var i = 0, len = copyable.length; i < len; i++) { }); }()); } - // auto-expand contents per subitem var pathname = window.location.pathname; -var mainRegex = /main[0-9]*\.html$/; var pathRegex = /text\/.*\.html$/; var linkIndex = 0; - -if(mainRegex.test(pathname) === false) { - var contentMatch = pathname.match(pathRegex); - if(contentMatch !== null) { - var linkMatch = new RegExp(contentMatch); - var links = document.getElementById("Contents").getElementsByTagName("a"); - for (var i = 0, len = links.length; i < len; i++) { - if(links[i].href.match(linkMatch)) { - var linkIndex = i; - } - } - - var cItem = document.getElementById("Contents").getElementsByTagName("a")[linkIndex].parentElement; - var parents = []; - - while (cItem.parentElement && !cItem.parentElement.matches("#Contents") && parents.indexOf(cItem.parentElement) == -1) { - parents.push(cItem = cItem.parentElement); - } - var liParents = [].filter.call(parents, function(item) { - return item.matches("li"); - }); - - for (var i = 0, len = liParents.length; i < len; i++) { - var input = liParents[i].querySelectorAll(':scope > input'); - document.getElementById(input[0].id).checked = true; +var contentMatch = pathname.match(pathRegex); +function linksMatch(content) { + var linkMatch = new RegExp(content); + var links = document.getElementById("Contents").getElementsByTagName("a"); + for (var i = 0, len = links.length; i < len; i++) { + if (links[i].href.match(linkMatch)) { + return i; } } } +linkIndex = linksMatch(contentMatch); +if (typeof linkIndex !== "undefined") { + var current = document.getElementById("Contents").getElementsByTagName("a")[linkIndex]; + var cItem = current.parentElement; + var parents = []; + while (cItem.parentElement && !cItem.parentElement.matches("#Contents") && parents.indexOf(cItem.parentElement) == -1) { + parents.push(cItem = cItem.parentElement); + } + var liParents = [].filter.call(parents, function(item) { + return item.matches("li"); + }); + for (var i = 0, len = liParents.length; i < len; i++) { + var input = liParents[i].querySelectorAll(':scope > input'); + document.getElementById(input[0].id).checked = true; + } + current.classList.add('contents-current'); +} /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ |