diff options
Diffstat (limited to 'htdocs/page.js')
-rw-r--r-- | htdocs/page.js | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/htdocs/page.js b/htdocs/page.js index 9e5287a..15bf45b 100644 --- a/htdocs/page.js +++ b/htdocs/page.js @@ -69,12 +69,36 @@ } if(typeof strips[which] != "undefined") { this.parentNode.insertBefore(strips[which], this.nextSibling); - var newOrder = document.getElementsByClassName("strip"); - var newOrderString = ""; - for(var i=0; i<newOrder.length; i++) { - var name = newOrder[i].dataset.stripName; - newOrderString += (newOrderString.length > 0 ? "," : "") + name; - } + + var newOrder = []; + if(typeof localStorage["stripsOrder"] != "undefined") { + newOrder = localStorage["stripsOrder"].split(/,/); + var oldIndex = newOrder.indexOf(which); + if(oldIndex >= 0) { + newOrder.splice(oldIndex, 1); + } + if(typeof this.dataset.stripName == "undefined") { + newOrder.unshift(which); + } + else { + var insertAfter = newOrder.indexOf(this.dataset.stripName); + if(insertAfter == -1) { + newOrder.push(which); + } + else { + newOrder.splice(insertAfter + 1, 0, which); + } + } + } + else { + var newOrderElements = document.getElementsByClassName("strip"); + for(var i=0; i<newOrderElements.length; i++) { + newOrder.push(newOrderElements[i].dataset.stripName); + } + } + + var newOrderString = newOrder.join(","); + localStorage["stripsOrder"] = newOrderString; e.preventDefault(); } |