1st round of PostJumper
This commit is contained in:
parent
4801013380
commit
154fdfabda
66
src/Miscellaneous/PostJumper.coffee
Normal file
66
src/Miscellaneous/PostJumper.coffee
Normal 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
|
||||
|
||||
@ -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]
|
||||
|
||||
@ -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'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user