Include index sort in history state.

This commit is contained in:
ccd0 2016-03-12 14:30:10 -08:00
parent 95d20be6b7
commit 7ac7c886a8

View File

@ -44,7 +44,7 @@ Index =
when 'Show Replies' when 'Show Replies'
$.on input, 'change', @cb.replies $.on input, 'change', @cb.replies
when 'Pin Watched Threads', 'Anchor Hidden Threads' when 'Pin Watched Threads', 'Anchor Hidden Threads'
$.on input, 'change', @cb.sort $.on input, 'change', @cb.resort
Header.menu.addEntry Header.menu.addEntry
el: $.el 'span', el: $.el 'span',
@ -74,12 +74,11 @@ Index =
@selectSort = $ '#index-sort', @navLinks @selectSort = $ '#index-sort', @navLinks
@selectSize = $ '#index-size', @navLinks @selectSize = $ '#index-size', @navLinks
$.on @selectMode, 'change', @cb.mode $.on @selectMode, 'change', @cb.mode
$.on @selectSort, 'change', @cb.sort
$.on @selectSize, 'change', $.cb.value
$.on @selectSize, 'change', @cb.size
for select in [@selectMode, @selectSort, @selectSize] for select in [@selectMode, @selectSort, @selectSize]
select.value = Conf[select.name] select.value = Conf[select.name]
for select in [@selectSort, @selectSize]
$.on select, 'change', $.cb.value
$.on @selectSort, 'change', @cb.sort
$.on @selectSize, 'change', @cb.size
# Thread container # Thread container
@root = $.el 'div', className: 'board json-index' @root = $.el 'div', className: 'board json-index'
@ -215,6 +214,10 @@ Index =
Index.pageLoad false Index.pageLoad false
sort: -> sort: ->
Index.pushState {sort: @value}
Index.pageLoad false
resort: ->
Index.sort() Index.sort()
Index.buildIndex() Index.buildIndex()
@ -237,9 +240,9 @@ Index =
popstate: (e) -> popstate: (e) ->
if e?.state if e?.state
{searched, mode} = e.state {searched, mode, sort} = e.state
page = Index.getCurrentPage() page = Index.getCurrentPage()
Index.setState {search: searched, mode, page} Index.setState {search: searched, mode, sort, page}
Index.pageLoad false Index.pageLoad false
else else
# page load or hash change # page load or hash change
@ -320,11 +323,12 @@ Index =
hash or= '' hash or= ''
history[if replace then 'replaceState' else 'pushState'] history[if replace then 'replaceState' else 'pushState']
mode: Conf['Index Mode'] mode: Conf['Index Mode']
sort: Conf['Index Sort']
searched: Index.search searched: Index.search
oldpage: pageBeforeSearch oldpage: pageBeforeSearch
, '', "#{location.protocol}//#{location.host}#{pathname}#{hash}" , '', "#{location.protocol}//#{location.host}#{pathname}#{hash}"
setState: ({search, mode, page}) -> setState: ({search, mode, sort, page}) ->
if search? and search isnt Index.search if search? and search isnt Index.search
Index.changed.search = true Index.changed.search = true
Index.search = search Index.search = search
@ -335,6 +339,10 @@ Index =
unless mode is 'catalog' or Conf['Previous Index Mode'] is mode unless mode is 'catalog' or Conf['Previous Index Mode'] is mode
Conf['Previous Index Mode'] = mode Conf['Previous Index Mode'] = mode
$.set 'Previous Index Mode', mode $.set 'Previous Index Mode', mode
if sort? and sort isnt Conf['Index Sort']
Index.changed.sort = true
Conf['Index Sort'] = sort
$.set 'Index Sort', sort
page = 1 if Conf['Index Mode'] in ['all pages', 'catalog'] page = 1 if Conf['Index Mode'] in ['all pages', 'catalog']
if page? and page isnt Index.currentPage if page? and page isnt Index.currentPage
Index.changed.page = true Index.changed.page = true
@ -342,19 +350,18 @@ Index =
pageLoad: (scroll=true) -> pageLoad: (scroll=true) ->
return unless Index.liveThreadData return unless Index.liveThreadData
{threads, search, mode, page} = Index.changed {threads, search, mode, sort, page} = Index.changed
if threads or search Index.sort() if threads or search or sort
Index.sort() Index.buildPagelist() if threads or search
Index.buildPagelist() Index.setupSearch() if search
Index.setupSearch() if search Index.setupMode() if mode
Index.applyMode() if mode Index.setupSort() if sort
if threads or search or mode or page Index.buildIndex() if threads or search or mode or page or sort
Index.buildIndex() Index.setPage() if threads or search or mode or page
Index.setPage()
Index.scrollToIndex() if scroll Index.scrollToIndex() if scroll
Index.changed = {} Index.changed = {}
applyMode: -> setupMode: ->
for mode in ['paged', 'infinite', 'all pages', 'catalog'] for mode in ['paged', 'infinite', 'all pages', 'catalog']
$[if mode is Conf['Index Mode'] then 'addClass' else 'rmClass'] doc, "#{mode.replace /\ /g, '-'}-mode" $[if mode is Conf['Index Mode'] then 'addClass' else 'rmClass'] doc, "#{mode.replace /\ /g, '-'}-mode"
Index.selectMode.value = Conf['Index Mode'] Index.selectMode.value = Conf['Index Mode']
@ -362,6 +369,9 @@ Index =
Index.showHiddenThreads = false Index.showHiddenThreads = false
$('#hidden-toggle a', Index.navLinks).textContent = 'Show' $('#hidden-toggle a', Index.navLinks).textContent = 'Show'
setupSort: ->
Index.selectSort.value = Conf['Index Sort']
getPagesNum: -> getPagesNum: ->
if Index.search if Index.search
Math.ceil Index.sortedNodes.length / Index.threadsNumPerPage Math.ceil Index.sortedNodes.length / Index.threadsNumPerPage