1st round of PostJumper

This commit is contained in:
ebinBuddha 2019-04-13 09:03:00 +02:00
parent 4801013380
commit 154fdfabda
3 changed files with 73 additions and 0 deletions

View File

@ -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('<a class="{classPrev}">{charPrev}</a><a class="{classNext}">{charNext}</a>') %>
span
scroll: (fromID,toID) ->
prevPos = $.getElementById(fromID).getBoundingClientRect
destPos = $.getElementById(toID).getBoundingClientRect
window.scrollBy 0, destPos-prevPos

View File

@ -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]

View File

@ -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'