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) ->