diff options
author | Andrew Dolgov <[email protected]> | 2013-06-05 22:19:33 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2013-06-05 22:20:22 +0400 |
commit | 08820be70b4d5cbe66e9ca9d5986c429c5186ca5 (patch) | |
tree | 94f9dc2e789de967a0c26c55b84c5b60cba1befa /js/viewfeed.js | |
parent | a1495542fcbe85e5dbe84d4eea26a8364924e2f0 (diff) |
add experimental floating title when scrolling long articles in combined mode
Diffstat (limited to 'js/viewfeed.js')
-rw-r--r-- | js/viewfeed.js | 67 |
1 files changed, 65 insertions, 2 deletions
diff --git a/js/viewfeed.js b/js/viewfeed.js index b708accfd..eee6bf766 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -444,7 +444,21 @@ function toggleMark(id, client_only) { var row = $("RROW-" + id); if (!row) return; - var imgs = row.getElementsByClassName("markedPic"); + var imgs = []; + + var row_imgs = row.getElementsByClassName("markedPic"); + + for (var i = 0; i < row_imgs.length; i++) + imgs.push(row_imgs[i]); + + var ft = $("floatingTitle"); + + if (ft && ft.getAttribute("rowid") == "RROW-" + id) { + var fte = ft.getElementsByClassName("markedPic"); + + for (var i = 0; i < fte.length; i++) + imgs.push(fte[i]); + } for (i = 0; i < imgs.length; i++) { var img = imgs[i]; @@ -488,7 +502,21 @@ function togglePub(id, client_only, no_effects, note) { var row = $("RROW-" + id); if (!row) return; - var imgs = row.getElementsByClassName("pubPic"); + var imgs = []; + + var row_imgs = row.getElementsByClassName("pubPic"); + + for (var i = 0; i < row_imgs.length; i++) + imgs.push(row_imgs[i]); + + var ft = $("floatingTitle"); + + if (ft && ft.getAttribute("rowid") == "RROW-" + id) { + var fte = ft.getElementsByClassName("pubPic"); + + for (var i = 0; i < fte.length; i++) + imgs.push(fte[i]); + } for (i = 0; i < imgs.length; i++) { var img = imgs[i]; @@ -1280,6 +1308,10 @@ function headlines_scroll_handler(e) { if (hsp) hsp.innerHTML = ""; } + if (getInitParam("cdm_expanded") && isCdmMode()) { + updateFloatingTitle(); + } + if (getInitParam("cdm_auto_catchup") == 1) { // let's get DOM some time to settle down @@ -2157,3 +2189,34 @@ function openSelectedAttachment(elem) { exception_error("openSelectedAttachment", e); } } + +function updateFloatingTitle() { + try { + var hf = $("headlines-frame"); + + var elems = $$("#headlines-frame > div[id*=RROW]"); + + for (var i = 0; i < elems.length; i++) { + var child = elems[i]; + + if (child.offsetTop + child.offsetHeight > hf.scrollTop) { + + var header = child.getElementsByClassName("cdmHeader")[0]; + + $("floatingTitle").setAttribute("rowid", child.id); + $("floatingTitle").innerHTML = + header.innerHTML; + + if (child.offsetTop < hf.scrollTop - header.offsetHeight - 100 && + child.offsetTop + child.offsetHeight - hf.scrollTop > 100) + Element.show("floatingTitle"); + else + Element.hide("floatingTitle"); + + break; + } + } + } catch (e) { + exception_error("updateFloatingTitle", e); + } +} |