From 154fdfabda81ce29cec7f602f0cbb5ae095e7673 Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 09:03:00 +0200 Subject: [PATCH 01/16] 1st round of PostJumper --- src/Miscellaneous/PostJumper.coffee | 66 +++++++++++++++++++++++++++++ src/main/Main.coffee | 1 + src/site/SW.yotsuba.coffee | 6 +++ 3 files changed, 73 insertions(+) create mode 100644 src/Miscellaneous/PostJumper.coffee diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee new file mode 100644 index 000000000..e4a53e462 --- /dev/null +++ b/src/Miscellaneous/PostJumper.coffee @@ -0,0 +1,66 @@ +PostJumper = + init: -> + @capcodesMap = new Map + @uniqueIDsMap = new Map + return unless g.VIEW in ['index', 'thread'] + + Callbacks.Post.push + name: 'Jump to previous/next post' + cb: @node + + node: -> + if @nodes.uniqueIDRoot + uniqueID = @nodes.uniqueID + $.after @nodes.uniqueIDRoot, makeButtons + $.on @nodes.uniqueIDJumperPrev, 'click', PostJumper.clickUniqueID @,-1 if @nodes.uniqueIDRoot + $.on @nodes.uniqueIDJumperNext, 'click', PostJumper.clickUniqueID @,1 if @nodes.uniqueIDRoot + if uniqueIDsMap.has @nodes.quote.innerText + uniqueIDsMap.get(uniqueID).push @nodes.quote.innerText + else + uniqueIDsMap.set uniqueID, @nodes.quote.innerText + + if @nodes.capcode + capcode = @nodes.capcode + $.after @nodes.capcode, makeButtons + $.on @nodes.capcodeJumperPrev, 'click', PostJumper.clickCapcode @,-1 if @nodes.capcode + $.on @nodes.capcodeJumperNext, 'click', PostJumper.clickCapcode @,1 if @nodes.capcode + if capcodesMap.has @nodes.quote.innerText + capcodesMap.get(capcode).push @nodes.quote.innerText + else + capcodesMap.set capcode, @nodes.quote.innerText + + clickUniqueID: (post,dir) -> -> + return unless uniqueIDsMap.size is 0 + uniqueID = post.uniqueID.innerText + fromID = post.quote.innerText + idx = uniqueIDsMap.get(uniqueID).indexOf(fromID); + return unless idx is -1 + idx = (idx + dir) %% uniqueIDsMap.size + toID=uniqueIDsMap.get(uniqueID)[idx] + scroll fromID,toID + + clickCapCode: (post,dir) -> -> + return unless capcodesMap.size is 0 + capcode = post.capcode.innerText + fromID = post.quote.innerText + idx = capcodesMap.get(capcode).indexOf(fromID); + return unless idx is -1 + idx = (idx + dir) %% capcodesMap.size + toID=capcodesMap.get(capcode)[idx] + scroll fromID,toID + + makeButtons: -> + charPrev = '\u{23EB}' + charNext = '\u{23EC}' + classPrev = 'prev' + classNext = 'next' + span = $.el 'span', + className: cl + $.extend span, <%= html('{charPrev}{charNext}') %> + span + + scroll: (fromID,toID) -> + prevPos = $.getElementById(fromID).getBoundingClientRect + destPos = $.getElementById(toID).getBoundingClientRect + window.scrollBy 0, destPos-prevPos + \ No newline at end of file diff --git a/src/main/Main.coffee b/src/main/Main.coffee index 17ce8ae8f..0e6d77925 100644 --- a/src/main/Main.coffee +++ b/src/main/Main.coffee @@ -553,6 +553,7 @@ Main = ['Quick Reply Personas', QR.persona] ['Quick Reply', QR] ['Cooldown', QR.cooldown] + ['Post Jumper', PostJumper] ['Pass Link', PassLink] ['Menu', Menu] ['Index Generator (Menu)', Index.menu] diff --git a/src/site/SW.yotsuba.coffee b/src/site/SW.yotsuba.coffee index ba51fb569..b57c35b4e 100644 --- a/src/site/SW.yotsuba.coffee +++ b/src/site/SW.yotsuba.coffee @@ -22,6 +22,12 @@ SW.yotsuba = uniqueIDRoot: '.posteruid' uniqueID: '.posteruid > .hand' capcode: '.capcode.hand' + capcodeJumperRoot: '.capcodeJumper' + capcodeJumperPrev: '.capcodeJumper > .prev' + capcodeJumperNext: '.capcodeJumper > .next' + uniqueIDJumperRoot: '.uniqueIDJumper' + uniqueIDJumperPrev: '.uniqueIDJumper > .prev' + uniqueIDJumperNext: '.uniqueIDJumper > .next' pass: '.n-pu' flag: '.flag, .countryFlag' date: '.dateTime' From a8bef4a8fc4edc0ba242796153888ce98518bcb9 Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 10:53:19 +0200 Subject: [PATCH 02/16] html fix --- src/Miscellaneous/PostJumper.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index e4a53e462..c20c1b086 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -56,7 +56,7 @@ PostJumper = classNext = 'next' span = $.el 'span', className: cl - $.extend span, <%= html('{charPrev}{charNext}') %> + $.extend span, <%= html('${charPrev}${charNext}') %> span scroll: (fromID,toID) -> From bc1411f541fbcf8694c8b3ee587a5d9a1ce7aecd Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 11:01:18 +0200 Subject: [PATCH 03/16] other changes --- src/Miscellaneous/PostJumper.coffee | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index c20c1b086..b74873366 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -1,7 +1,7 @@ PostJumper = init: -> - @capcodesMap = new Map - @uniqueIDsMap = new Map + @capcodesMap = new Map() + @uniqueIDsMap = new Map() return unless g.VIEW in ['index', 'thread'] Callbacks.Post.push @@ -11,7 +11,7 @@ PostJumper = node: -> if @nodes.uniqueIDRoot uniqueID = @nodes.uniqueID - $.after @nodes.uniqueIDRoot, makeButtons + $.after @nodes.uniqueIDRoot, makeButtons 'uniqueIDJumper' $.on @nodes.uniqueIDJumperPrev, 'click', PostJumper.clickUniqueID @,-1 if @nodes.uniqueIDRoot $.on @nodes.uniqueIDJumperNext, 'click', PostJumper.clickUniqueID @,1 if @nodes.uniqueIDRoot if uniqueIDsMap.has @nodes.quote.innerText @@ -21,7 +21,7 @@ PostJumper = if @nodes.capcode capcode = @nodes.capcode - $.after @nodes.capcode, makeButtons + $.after @nodes.capcode, makeButtons 'capcodeJumper' $.on @nodes.capcodeJumperPrev, 'click', PostJumper.clickCapcode @,-1 if @nodes.capcode $.on @nodes.capcodeJumperNext, 'click', PostJumper.clickCapcode @,1 if @nodes.capcode if capcodesMap.has @nodes.quote.innerText @@ -42,14 +42,14 @@ PostJumper = clickCapCode: (post,dir) -> -> return unless capcodesMap.size is 0 capcode = post.capcode.innerText - fromID = post.quote.innerText + fromID = post.quote.innerText idx = capcodesMap.get(capcode).indexOf(fromID); return unless idx is -1 idx = (idx + dir) %% capcodesMap.size toID=capcodesMap.get(capcode)[idx] scroll fromID,toID - makeButtons: -> + makeButtons: (cl) -> charPrev = '\u{23EB}' charNext = '\u{23EC}' classPrev = 'prev' From 77209863f830663e20f583f73d47f7d202ae26ae Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 11:09:40 +0200 Subject: [PATCH 04/16] class name before method --- src/Miscellaneous/PostJumper.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index b74873366..d038b67b0 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -11,7 +11,7 @@ PostJumper = node: -> if @nodes.uniqueIDRoot uniqueID = @nodes.uniqueID - $.after @nodes.uniqueIDRoot, makeButtons 'uniqueIDJumper' + $.after @nodes.uniqueIDRoot, PostJumper.makeButtons 'uniqueIDJumper' $.on @nodes.uniqueIDJumperPrev, 'click', PostJumper.clickUniqueID @,-1 if @nodes.uniqueIDRoot $.on @nodes.uniqueIDJumperNext, 'click', PostJumper.clickUniqueID @,1 if @nodes.uniqueIDRoot if uniqueIDsMap.has @nodes.quote.innerText @@ -21,7 +21,7 @@ PostJumper = if @nodes.capcode capcode = @nodes.capcode - $.after @nodes.capcode, makeButtons 'capcodeJumper' + $.after @nodes.capcode, PostJumper.makeButtons 'capcodeJumper' $.on @nodes.capcodeJumperPrev, 'click', PostJumper.clickCapcode @,-1 if @nodes.capcode $.on @nodes.capcodeJumperNext, 'click', PostJumper.clickCapcode @,1 if @nodes.capcode if capcodesMap.has @nodes.quote.innerText From 704417200e930a3022c99a34866e5abd5042ad29 Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 11:12:21 +0200 Subject: [PATCH 05/16] other similar --- src/Miscellaneous/PostJumper.coffee | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index d038b67b0..ed2d0eca3 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -14,39 +14,39 @@ PostJumper = $.after @nodes.uniqueIDRoot, PostJumper.makeButtons 'uniqueIDJumper' $.on @nodes.uniqueIDJumperPrev, 'click', PostJumper.clickUniqueID @,-1 if @nodes.uniqueIDRoot $.on @nodes.uniqueIDJumperNext, 'click', PostJumper.clickUniqueID @,1 if @nodes.uniqueIDRoot - if uniqueIDsMap.has @nodes.quote.innerText - uniqueIDsMap.get(uniqueID).push @nodes.quote.innerText + if PostJumper.uniqueIDsMap.has @nodes.quote.innerText + PostJumper.uniqueIDsMap.get(uniqueID).push @nodes.quote.innerText else - uniqueIDsMap.set uniqueID, @nodes.quote.innerText + PostJumper.uniqueIDsMap.set uniqueID, @nodes.quote.innerText if @nodes.capcode capcode = @nodes.capcode $.after @nodes.capcode, PostJumper.makeButtons 'capcodeJumper' $.on @nodes.capcodeJumperPrev, 'click', PostJumper.clickCapcode @,-1 if @nodes.capcode $.on @nodes.capcodeJumperNext, 'click', PostJumper.clickCapcode @,1 if @nodes.capcode - if capcodesMap.has @nodes.quote.innerText - capcodesMap.get(capcode).push @nodes.quote.innerText + if PostJumper.capcodesMap.has @nodes.quote.innerText + PostJumper.capcodesMap.get(capcode).push @nodes.quote.innerText else - capcodesMap.set capcode, @nodes.quote.innerText + PostJumper.capcodesMap.set capcode, @nodes.quote.innerText clickUniqueID: (post,dir) -> -> - return unless uniqueIDsMap.size is 0 + return unless PostJumper.uniqueIDsMap.size is 0 uniqueID = post.uniqueID.innerText fromID = post.quote.innerText - idx = uniqueIDsMap.get(uniqueID).indexOf(fromID); + idx = PostJumper.uniqueIDsMap.get(uniqueID).indexOf(fromID); return unless idx is -1 - idx = (idx + dir) %% uniqueIDsMap.size - toID=uniqueIDsMap.get(uniqueID)[idx] + idx = (idx + dir) %% PostJumper.uniqueIDsMap.size + toID= PostJumper.uniqueIDsMap.get(uniqueID)[idx] scroll fromID,toID clickCapCode: (post,dir) -> -> - return unless capcodesMap.size is 0 + return unless PostJumper.capcodesMap.size is 0 capcode = post.capcode.innerText fromID = post.quote.innerText - idx = capcodesMap.get(capcode).indexOf(fromID); + idx = PostJumper.capcodesMap.get(capcode).indexOf(fromID); return unless idx is -1 - idx = (idx + dir) %% capcodesMap.size - toID=capcodesMap.get(capcode)[idx] + idx = (idx + dir) %% PostJumper.capcodesMap.size + toID= PostJumper.capcodesMap.get(capcode)[idx] scroll fromID,toID makeButtons: (cl) -> From 52f14a268ce9129546b98c3d2bea877fbc28764d Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 20:18:31 +0200 Subject: [PATCH 06/16] other changes to selectors --- src/Miscellaneous/PostJumper.coffee | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index ed2d0eca3..b99ee9558 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -5,29 +5,29 @@ PostJumper = return unless g.VIEW in ['index', 'thread'] Callbacks.Post.push - name: 'Jump to previous/next post' + name: 'Post Jumper' cb: @node node: -> if @nodes.uniqueIDRoot uniqueID = @nodes.uniqueID - $.after @nodes.uniqueIDRoot, PostJumper.makeButtons 'uniqueIDJumper' - $.on @nodes.uniqueIDJumperPrev, 'click', PostJumper.clickUniqueID @,-1 if @nodes.uniqueIDRoot - $.on @nodes.uniqueIDJumperNext, 'click', PostJumper.clickUniqueID @,1 if @nodes.uniqueIDRoot - if PostJumper.uniqueIDsMap.has @nodes.quote.innerText - PostJumper.uniqueIDsMap.get(uniqueID).push @nodes.quote.innerText - else - PostJumper.uniqueIDsMap.set uniqueID, @nodes.quote.innerText + IDButtons = PostJumper.makeButtons 'uniqueIDJumper' + $.after @nodes.uniqueIDRoot, IDButtons + $.on IDButtons.firstChild, 'click', PostJumper.clickUniqueID @,-1 if @nodes.uniqueIDRoot + $.on IDButtons.lastChild, 'click', PostJumper.clickUniqueID @,1 if @nodes.uniqueIDRoot + if not PostJumper.uniqueIDsMap.has @nodes.quote.innerText + PostJumper.uniqueIDsMap.set uniqueID, [] + PostJumper.uniqueIDsMap.get(uniqueID).push @nodes.quote.innerText if @nodes.capcode capcode = @nodes.capcode - $.after @nodes.capcode, PostJumper.makeButtons 'capcodeJumper' - $.on @nodes.capcodeJumperPrev, 'click', PostJumper.clickCapcode @,-1 if @nodes.capcode - $.on @nodes.capcodeJumperNext, 'click', PostJumper.clickCapcode @,1 if @nodes.capcode - if PostJumper.capcodesMap.has @nodes.quote.innerText - PostJumper.capcodesMap.get(capcode).push @nodes.quote.innerText - else - PostJumper.capcodesMap.set capcode, @nodes.quote.innerText + capcodeButtons = PostJumper.makeButtons 'capcodeJumper' + $.after @nodes.capcode, capcodeButtons + $.on capcodeButtons.firstChild, 'click', PostJumper.clickCapcode @,-1 if @nodes.capcode + $.on capcodeButtons.lastChild, 'click', PostJumper.clickCapcode @,1 if @nodes.capcode + if not PostJumper.capcodesMap.has @nodes.quote.innerText + PostJumper.capcodesMap.set capcode, [] + PostJumper.capcodesMap.get(capcode).push @nodes.quote.innerText clickUniqueID: (post,dir) -> -> return unless PostJumper.uniqueIDsMap.size is 0 From 5a5e92e0ae7a16771b9f8193ba2d62ed304f83f8 Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 21:21:38 +0200 Subject: [PATCH 07/16] many bugs --- src/Miscellaneous/PostJumper.coffee | 36 ++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index b99ee9558..2c8bef6a3 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -10,44 +10,44 @@ PostJumper = node: -> if @nodes.uniqueIDRoot - uniqueID = @nodes.uniqueID + uniqueID = @nodes.uniqueID.innerText IDButtons = PostJumper.makeButtons 'uniqueIDJumper' $.after @nodes.uniqueIDRoot, IDButtons $.on IDButtons.firstChild, 'click', PostJumper.clickUniqueID @,-1 if @nodes.uniqueIDRoot $.on IDButtons.lastChild, 'click', PostJumper.clickUniqueID @,1 if @nodes.uniqueIDRoot - if not PostJumper.uniqueIDsMap.has @nodes.quote.innerText + if not PostJumper.uniqueIDsMap.has uniqueID PostJumper.uniqueIDsMap.set uniqueID, [] PostJumper.uniqueIDsMap.get(uniqueID).push @nodes.quote.innerText if @nodes.capcode - capcode = @nodes.capcode + capcode = @nodes.capcode.innerText capcodeButtons = PostJumper.makeButtons 'capcodeJumper' $.after @nodes.capcode, capcodeButtons $.on capcodeButtons.firstChild, 'click', PostJumper.clickCapcode @,-1 if @nodes.capcode $.on capcodeButtons.lastChild, 'click', PostJumper.clickCapcode @,1 if @nodes.capcode - if not PostJumper.capcodesMap.has @nodes.quote.innerText + if not PostJumper.capcodesMap.has capcode PostJumper.capcodesMap.set capcode, [] PostJumper.capcodesMap.get(capcode).push @nodes.quote.innerText clickUniqueID: (post,dir) -> -> - return unless PostJumper.uniqueIDsMap.size is 0 - uniqueID = post.uniqueID.innerText - fromID = post.quote.innerText + return if PostJumper.uniqueIDsMap.size is 0 + uniqueID = post.info.uniqueID + fromID = post.ID.toString idx = PostJumper.uniqueIDsMap.get(uniqueID).indexOf(fromID); - return unless idx is -1 - idx = (idx + dir) %% PostJumper.uniqueIDsMap.size + return if idx is -1 + idx = (idx + dir) %% PostJumper.uniqueIDsMap.get(uniqueID).length toID= PostJumper.uniqueIDsMap.get(uniqueID)[idx] - scroll fromID,toID + PostJumper.scroll fromID,toID clickCapCode: (post,dir) -> -> - return unless PostJumper.capcodesMap.size is 0 - capcode = post.capcode.innerText - fromID = post.quote.innerText + return if PostJumper.capcodesMap.size is 0 + capcode = post.info.capcode + fromID = post.ID.toString idx = PostJumper.capcodesMap.get(capcode).indexOf(fromID); - return unless idx is -1 - idx = (idx + dir) %% PostJumper.capcodesMap.size + return if idx is -1 + idx = (idx + dir) %% PostJumper.capcodesMap.get(capcode).length toID= PostJumper.capcodesMap.get(capcode)[idx] - scroll fromID,toID + PostJumper.scroll fromID,toID makeButtons: (cl) -> charPrev = '\u{23EB}' @@ -60,7 +60,7 @@ PostJumper = span scroll: (fromID,toID) -> - prevPos = $.getElementById(fromID).getBoundingClientRect - destPos = $.getElementById(toID).getBoundingClientRect + prevPos = $.id(fromID).getBoundingClientRect().top + destPos = $.id(toID).getBoundingClientRect().top window.scrollBy 0, destPos-prevPos \ No newline at end of file From 484cb763d8c707875142c0d0c878b823d1a88221 Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 21:25:01 +0200 Subject: [PATCH 08/16] other tweaks --- src/Miscellaneous/PostJumper.coffee | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index 2c8bef6a3..74ed5fc99 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -13,8 +13,8 @@ PostJumper = uniqueID = @nodes.uniqueID.innerText IDButtons = PostJumper.makeButtons 'uniqueIDJumper' $.after @nodes.uniqueIDRoot, IDButtons - $.on IDButtons.firstChild, 'click', PostJumper.clickUniqueID @,-1 if @nodes.uniqueIDRoot - $.on IDButtons.lastChild, 'click', PostJumper.clickUniqueID @,1 if @nodes.uniqueIDRoot + $.on IDButtons.firstChild, 'click', PostJumper.clickUniqueID @,-1 + $.on IDButtons.lastChild, 'click', PostJumper.clickUniqueID @,1 if not PostJumper.uniqueIDsMap.has uniqueID PostJumper.uniqueIDsMap.set uniqueID, [] PostJumper.uniqueIDsMap.get(uniqueID).push @nodes.quote.innerText @@ -23,8 +23,8 @@ PostJumper = capcode = @nodes.capcode.innerText capcodeButtons = PostJumper.makeButtons 'capcodeJumper' $.after @nodes.capcode, capcodeButtons - $.on capcodeButtons.firstChild, 'click', PostJumper.clickCapcode @,-1 if @nodes.capcode - $.on capcodeButtons.lastChild, 'click', PostJumper.clickCapcode @,1 if @nodes.capcode + $.on capcodeButtons.firstChild, 'click', PostJumper.clickCapcode @,-1 + $.on capcodeButtons.lastChild, 'click', PostJumper.clickCapcode @,1 if not PostJumper.capcodesMap.has capcode PostJumper.capcodesMap.set capcode, [] PostJumper.capcodesMap.get(capcode).push @nodes.quote.innerText @@ -60,7 +60,7 @@ PostJumper = span scroll: (fromID,toID) -> - prevPos = $.id(fromID).getBoundingClientRect().top - destPos = $.id(toID).getBoundingClientRect().top + prevPos = $.id("pc"+fromID).getBoundingClientRect().top + destPos = $.id("pc"+toID).getBoundingClientRect().top window.scrollBy 0, destPos-prevPos \ No newline at end of file From 4185d8d3960a3a85dd1e2090910f7d70756666e2 Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 21:28:21 +0200 Subject: [PATCH 09/16] hell of a language --- src/Miscellaneous/PostJumper.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index 74ed5fc99..7babdfaf6 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -32,7 +32,7 @@ PostJumper = clickUniqueID: (post,dir) -> -> return if PostJumper.uniqueIDsMap.size is 0 uniqueID = post.info.uniqueID - fromID = post.ID.toString + fromID = post.ID.toString() idx = PostJumper.uniqueIDsMap.get(uniqueID).indexOf(fromID); return if idx is -1 idx = (idx + dir) %% PostJumper.uniqueIDsMap.get(uniqueID).length @@ -42,7 +42,7 @@ PostJumper = clickCapCode: (post,dir) -> -> return if PostJumper.capcodesMap.size is 0 capcode = post.info.capcode - fromID = post.ID.toString + fromID = post.ID.toString() idx = PostJumper.capcodesMap.get(capcode).indexOf(fromID); return if idx is -1 idx = (idx + dir) %% PostJumper.capcodesMap.get(capcode).length From 99c82d5e9ee552afde745515b1f7c0669defe506 Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 21:44:28 +0200 Subject: [PATCH 10/16] fixed for capcodes --- src/Miscellaneous/PostJumper.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index 7babdfaf6..c8f3c76fa 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -39,9 +39,9 @@ PostJumper = toID= PostJumper.uniqueIDsMap.get(uniqueID)[idx] PostJumper.scroll fromID,toID - clickCapCode: (post,dir) -> -> + clickCapcode: (post,dir) -> -> return if PostJumper.capcodesMap.size is 0 - capcode = post.info.capcode + capcode = "## " + post.info.capcode fromID = post.ID.toString() idx = PostJumper.capcodesMap.get(capcode).indexOf(fromID); return if idx is -1 From 4ed808feef67d449c3a436344574b03a1f48975b Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sat, 13 Apr 2019 22:14:00 +0200 Subject: [PATCH 11/16] fixed css added javascript:void(0) to get the right cursor --- src/Miscellaneous/PostJumper.coffee | 2 +- src/css/style.css | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index c8f3c76fa..e8f7ef89b 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -56,7 +56,7 @@ PostJumper = classNext = 'next' span = $.el 'span', className: cl - $.extend span, <%= html('${charPrev}${charNext}') %> + $.extend span, <%= html('${charPrev}${charNext}') %> span scroll: (fromID,toID) -> diff --git a/src/css/style.css b/src/css/style.css index 9c813ca58..b8245b6e5 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -917,6 +917,8 @@ div[data-checked="false"] > .suboption-list { .catalog-post > * > .fileText > :not(:first-child), .catalog-post > .postInfo > :not(.subject):not(.nameBlock):not(.dateTime), .catalog-post > * > * > .posteruid, +.catalog-post > * > * > .uniqueIDJumper, +.catalog-post > * > * > .capcodeJumper, :root.bottom-backlinks .catalog-post > .container, .post:not(.catalog-post) > .catalog-link, .post:not(.catalog-post) > .catalog-stats, @@ -2403,3 +2405,9 @@ a:only-of-type > .remove { :root.gallery-open.fixed #header-bar:not(.autohide) #shortcuts .fa::before { visibility: hidden; } +.capcodeJumper > .prev, +.capcodeJumper > .next, +.uniqueIDJumper > .prev, +.uniqueIDJumper > .next { + font-size: 120%; +} From bef9ac1d5cceb150847ed0e5f06e99838fa5b39b Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sun, 14 Apr 2019 00:18:52 +0200 Subject: [PATCH 12/16] added Config for PostJumper --- src/Miscellaneous/PostJumper.coffee | 4 ++-- src/config/Config.coffee | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index e8f7ef89b..ec98468d7 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -9,7 +9,7 @@ PostJumper = cb: @node node: -> - if @nodes.uniqueIDRoot + if @nodes.uniqueIDRoot and Conf['Unique ID Navigation'] uniqueID = @nodes.uniqueID.innerText IDButtons = PostJumper.makeButtons 'uniqueIDJumper' $.after @nodes.uniqueIDRoot, IDButtons @@ -19,7 +19,7 @@ PostJumper = PostJumper.uniqueIDsMap.set uniqueID, [] PostJumper.uniqueIDsMap.get(uniqueID).push @nodes.quote.innerText - if @nodes.capcode + if @nodes.capcode and Conf['Capcode Navigation'] capcode = @nodes.capcode.innerText capcodeButtons = PostJumper.makeButtons 'capcodeJumper' $.after @nodes.capcode, capcodeButtons diff --git a/src/config/Config.coffee b/src/config/Config.coffee index f4ddc3dae..fec89d1ac 100644 --- a/src/config/Config.coffee +++ b/src/config/Config.coffee @@ -92,6 +92,14 @@ Config = false 'Add buttons to navigate to top / bottom of thread.' ] + 'Unique ID Navigation': [ + false + 'Add buttons to navigate to posts having the same unique ID.' + ] + 'Capcode Navigation': [ + false + 'Add buttons to navigate to posts having the same capcode.' + ] 'Custom Board Titles': [ true 'Allow editing of the board title and subtitle by ctrl/\u2318+clicking them.' From d6ae451360711d3cc9fdc47593dafee9662a7da5 Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sun, 14 Apr 2019 21:01:45 +0200 Subject: [PATCH 13/16] added check to avoid button duplication during Post cloning --- src/Miscellaneous/PostJumper.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index ec98468d7..1a29c28a3 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -9,7 +9,7 @@ PostJumper = cb: @node node: -> - if @nodes.uniqueIDRoot and Conf['Unique ID Navigation'] + if @nodes.uniqueIDRoot and Conf['Unique ID Navigation'] and not @nodes.uniqueIDJumperRoot uniqueID = @nodes.uniqueID.innerText IDButtons = PostJumper.makeButtons 'uniqueIDJumper' $.after @nodes.uniqueIDRoot, IDButtons @@ -19,7 +19,7 @@ PostJumper = PostJumper.uniqueIDsMap.set uniqueID, [] PostJumper.uniqueIDsMap.get(uniqueID).push @nodes.quote.innerText - if @nodes.capcode and Conf['Capcode Navigation'] + if @nodes.capcode and Conf['Capcode Navigation'] and not @nodes.capcodeJumperRoot capcode = @nodes.capcode.innerText capcodeButtons = PostJumper.makeButtons 'capcodeJumper' $.after @nodes.capcode, capcodeButtons From f6e038a72eeb2b3b01d77f5dc44caa7932b345a2 Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Sun, 14 Apr 2019 22:03:37 +0200 Subject: [PATCH 14/16] removed redundancy --- src/Miscellaneous/PostJumper.coffee | 56 +++++++++++------------------ 1 file changed, 21 insertions(+), 35 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index 1a29c28a3..3dd8a6310 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -1,7 +1,7 @@ PostJumper = init: -> - @capcodesMap = new Map() - @uniqueIDsMap = new Map() + @capcodeMap = new Map() + @uniqueIDMap = new Map() return unless g.VIEW in ['index', 'thread'] Callbacks.Post.push @@ -10,43 +10,29 @@ PostJumper = node: -> if @nodes.uniqueIDRoot and Conf['Unique ID Navigation'] and not @nodes.uniqueIDJumperRoot - uniqueID = @nodes.uniqueID.innerText - IDButtons = PostJumper.makeButtons 'uniqueIDJumper' - $.after @nodes.uniqueIDRoot, IDButtons - $.on IDButtons.firstChild, 'click', PostJumper.clickUniqueID @,-1 - $.on IDButtons.lastChild, 'click', PostJumper.clickUniqueID @,1 - if not PostJumper.uniqueIDsMap.has uniqueID - PostJumper.uniqueIDsMap.set uniqueID, [] - PostJumper.uniqueIDsMap.get(uniqueID).push @nodes.quote.innerText - + PostJumper.addButtons @,'uniqueID' + if @nodes.capcode and Conf['Capcode Navigation'] and not @nodes.capcodeJumperRoot - capcode = @nodes.capcode.innerText - capcodeButtons = PostJumper.makeButtons 'capcodeJumper' - $.after @nodes.capcode, capcodeButtons - $.on capcodeButtons.firstChild, 'click', PostJumper.clickCapcode @,-1 - $.on capcodeButtons.lastChild, 'click', PostJumper.clickCapcode @,1 - if not PostJumper.capcodesMap.has capcode - PostJumper.capcodesMap.set capcode, [] - PostJumper.capcodesMap.get(capcode).push @nodes.quote.innerText + PostJumper.addButtons @,'capcode' - clickUniqueID: (post,dir) -> -> - return if PostJumper.uniqueIDsMap.size is 0 - uniqueID = post.info.uniqueID - fromID = post.ID.toString() - idx = PostJumper.uniqueIDsMap.get(uniqueID).indexOf(fromID); - return if idx is -1 - idx = (idx + dir) %% PostJumper.uniqueIDsMap.get(uniqueID).length - toID= PostJumper.uniqueIDsMap.get(uniqueID)[idx] - PostJumper.scroll fromID,toID + addButtons: (post,type) -> + value = post.nodes[type].innerText + buttons = PostJumper.makeButtons type+'Jumper' + $.after post.nodes[type+(if type is 'capcode' then '' else 'Root')], buttons + $.on buttons.firstChild, 'click', PostJumper.buttonClick post,type,-1 + $.on buttons.lastChild, 'click', PostJumper.buttonClick post,type,1 + if not PostJumper[type+'Map'].has value + PostJumper[type+'Map'].set value, [] + PostJumper[type+'Map'].get(value).push post.nodes.quote.innerText - clickCapcode: (post,dir) -> -> - return if PostJumper.capcodesMap.size is 0 - capcode = "## " + post.info.capcode - fromID = post.ID.toString() - idx = PostJumper.capcodesMap.get(capcode).indexOf(fromID); + buttonClick: (post,type,dir) -> -> + return if PostJumper[type+'Map'].size is 0 + value = (if type is 'capcode' then '## ' else '') + post.info[type] + fromID = post.ID.toString() + idx = PostJumper[type+'Map'].get(value).indexOf(fromID); return if idx is -1 - idx = (idx + dir) %% PostJumper.capcodesMap.get(capcode).length - toID= PostJumper.capcodesMap.get(capcode)[idx] + idx = (idx + dir) %% PostJumper[type+'Map'].get(value).length + toID= PostJumper[type+'Map'].get(value)[idx] PostJumper.scroll fromID,toID makeButtons: (cl) -> From 7a2f43100873e64f4f0b60c13d40b89d518e8e0e Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Tue, 16 Apr 2019 07:28:28 +0200 Subject: [PATCH 15/16] Bulk of changes after code review - comment on css and single class for postJumper - single Conf setting - post number sorting - renamed maps - removed selectors from SW.yotsuba.coffee - used the g object and other smarter ways to get the needed stuff --- src/Miscellaneous/PostJumper.coffee | 44 ++++++++++++++++++----------- src/config/Config.coffee | 8 ++---- src/css/style.css | 8 +++--- src/site/SW.yotsuba.coffee | 6 ---- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index 3dd8a6310..52a298653 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -1,7 +1,7 @@ PostJumper = init: -> - @capcodeMap = new Map() - @uniqueIDMap = new Map() + @capcode = new Map() + @uniqueID = new Map() return unless g.VIEW in ['index', 'thread'] Callbacks.Post.push @@ -9,10 +9,12 @@ PostJumper = cb: @node node: -> - if @nodes.uniqueIDRoot and Conf['Unique ID Navigation'] and not @nodes.uniqueIDJumperRoot + return unless Conf['Unique ID and capcode Navigation'] + + if @nodes.uniqueIDRoot and not @isClone PostJumper.addButtons @,'uniqueID' - if @nodes.capcode and Conf['Capcode Navigation'] and not @nodes.capcodeJumperRoot + if @nodes.capcode and not @isClone PostJumper.addButtons @,'capcode' addButtons: (post,type) -> @@ -21,32 +23,42 @@ PostJumper = $.after post.nodes[type+(if type is 'capcode' then '' else 'Root')], buttons $.on buttons.firstChild, 'click', PostJumper.buttonClick post,type,-1 $.on buttons.lastChild, 'click', PostJumper.buttonClick post,type,1 - if not PostJumper[type+'Map'].has value - PostJumper[type+'Map'].set value, [] - PostJumper[type+'Map'].get(value).push post.nodes.quote.innerText + if not PostJumper[type].has value + PostJumper[type].set value, [] + PostJumper[type].get(value).push {key: post.ID, val: post.fullID} + PostJumper[type].get(value).sort (first,second) -> first.key-second.key buttonClick: (post,type,dir) -> -> - return if PostJumper[type+'Map'].size is 0 + return if PostJumper[type].size is 0 value = (if type is 'capcode' then '## ' else '') + post.info[type] - fromID = post.ID.toString() - idx = PostJumper[type+'Map'].get(value).indexOf(fromID); + fromID = post.ID + idx = PostJumper.indexOfPair PostJumper[type].get(value),fromID + fromID = PostJumper[type].get(value)[idx].val return if idx is -1 - idx = (idx + dir) %% PostJumper[type+'Map'].get(value).length - toID= PostJumper[type+'Map'].get(value)[idx] + idx = (idx + dir) %% PostJumper[type].get(value).length + toID= PostJumper[type].get(value)[idx].val PostJumper.scroll fromID,toID - makeButtons: (cl) -> + makeButtons: -> charPrev = '\u{23EB}' charNext = '\u{23EC}' classPrev = 'prev' classNext = 'next' span = $.el 'span', - className: cl + className: 'postJumper' $.extend span, <%= html('${charPrev}${charNext}') %> span scroll: (fromID,toID) -> - prevPos = $.id("pc"+fromID).getBoundingClientRect().top - destPos = $.id("pc"+toID).getBoundingClientRect().top + prevPos = g.posts[fromID].nodes.root.getBoundingClientRect().top + destPos = g.posts[toID].nodes.root.getBoundingClientRect().top window.scrollBy 0, destPos-prevPos + + indexOfPair: (array,key) -> + result = -1; + for i in [0..array.length-1] by 1 + if array[i].key is key + result = i + break + result \ No newline at end of file diff --git a/src/config/Config.coffee b/src/config/Config.coffee index fec89d1ac..0fd8fba0b 100644 --- a/src/config/Config.coffee +++ b/src/config/Config.coffee @@ -92,13 +92,9 @@ Config = false 'Add buttons to navigate to top / bottom of thread.' ] - 'Unique ID Navigation': [ + 'Unique ID and capcode Navigation': [ false - 'Add buttons to navigate to posts having the same unique ID.' - ] - 'Capcode Navigation': [ - false - 'Add buttons to navigate to posts having the same capcode.' + 'Add buttons to navigate to posts having the same unique ID or capcode.' ] 'Custom Board Titles': [ true diff --git a/src/css/style.css b/src/css/style.css index b8245b6e5..9fc9841fa 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -2405,9 +2405,9 @@ a:only-of-type > .remove { :root.gallery-open.fixed #header-bar:not(.autohide) #shortcuts .fa::before { visibility: hidden; } -.capcodeJumper > .prev, -.capcodeJumper > .next, -.uniqueIDJumper > .prev, -.uniqueIDJumper > .next { + +/* PostJumper */ +.postJumper > .prev, +.postJumper > .next { font-size: 120%; } diff --git a/src/site/SW.yotsuba.coffee b/src/site/SW.yotsuba.coffee index df0dd4894..cb25f01c9 100644 --- a/src/site/SW.yotsuba.coffee +++ b/src/site/SW.yotsuba.coffee @@ -27,12 +27,6 @@ SW.yotsuba = uniqueIDRoot: '.posteruid' uniqueID: '.posteruid > .hand' capcode: '.capcode.hand' - capcodeJumperRoot: '.capcodeJumper' - capcodeJumperPrev: '.capcodeJumper > .prev' - capcodeJumperNext: '.capcodeJumper > .next' - uniqueIDJumperRoot: '.uniqueIDJumper' - uniqueIDJumperPrev: '.uniqueIDJumper > .prev' - uniqueIDJumperNext: '.uniqueIDJumper > .next' pass: '.n-pu' flag: '.flag, .countryFlag' date: '.dateTime' From 6fce6cbf4f6685d20348ae3d8dfddcc9e0a20121 Mon Sep 17 00:00:00 2001 From: ebinBuddha <30810167+ebinBuddha@users.noreply.github.com> Date: Tue, 16 Apr 2019 07:51:58 +0200 Subject: [PATCH 16/16] using nameBlock as reference for position as it's more predictable than the root esp. with the op --- src/Miscellaneous/PostJumper.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Miscellaneous/PostJumper.coffee b/src/Miscellaneous/PostJumper.coffee index 52a298653..d24b7d575 100644 --- a/src/Miscellaneous/PostJumper.coffee +++ b/src/Miscellaneous/PostJumper.coffee @@ -50,8 +50,8 @@ PostJumper = span scroll: (fromID,toID) -> - prevPos = g.posts[fromID].nodes.root.getBoundingClientRect().top - destPos = g.posts[toID].nodes.root.getBoundingClientRect().top + prevPos = g.posts[fromID].nodes.nameBlock.getBoundingClientRect().top + destPos = g.posts[toID].nodes.nameBlock.getBoundingClientRect().top window.scrollBy 0, destPos-prevPos indexOfPair: (array,key) ->