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 Personas', QR.persona]
|
||||||
['Quick Reply', QR]
|
['Quick Reply', QR]
|
||||||
['Cooldown', QR.cooldown]
|
['Cooldown', QR.cooldown]
|
||||||
|
['Post Jumper', PostJumper]
|
||||||
['Pass Link', PassLink]
|
['Pass Link', PassLink]
|
||||||
['Menu', Menu]
|
['Menu', Menu]
|
||||||
['Index Generator (Menu)', Index.menu]
|
['Index Generator (Menu)', Index.menu]
|
||||||
|
|||||||
@ -22,6 +22,12 @@ SW.yotsuba =
|
|||||||
uniqueIDRoot: '.posteruid'
|
uniqueIDRoot: '.posteruid'
|
||||||
uniqueID: '.posteruid > .hand'
|
uniqueID: '.posteruid > .hand'
|
||||||
capcode: '.capcode.hand'
|
capcode: '.capcode.hand'
|
||||||
|
capcodeJumperRoot: '.capcodeJumper'
|
||||||
|
capcodeJumperPrev: '.capcodeJumper > .prev'
|
||||||
|
capcodeJumperNext: '.capcodeJumper > .next'
|
||||||
|
uniqueIDJumperRoot: '.uniqueIDJumper'
|
||||||
|
uniqueIDJumperPrev: '.uniqueIDJumper > .prev'
|
||||||
|
uniqueIDJumperNext: '.uniqueIDJumper > .next'
|
||||||
pass: '.n-pu'
|
pass: '.n-pu'
|
||||||
flag: '.flag, .countryFlag'
|
flag: '.flag, .countryFlag'
|
||||||
date: '.dateTime'
|
date: '.dateTime'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user