shopping order sort. maybe needs some fine tuning
This commit is contained in:
@@ -1,3 +1,22 @@
|
||||
Array.prototype.stableSort = function(cmp) {
|
||||
cmp = !!cmp ? cmp : (a, b) => {
|
||||
if (a < b) return -1;
|
||||
if (a > b) return 1;
|
||||
return 0;
|
||||
};
|
||||
let stabilizedThis = this.map((el, index) => [el, index]);
|
||||
let stableCmp = (a, b) => {
|
||||
let order = cmp(a[0], b[0]);
|
||||
if (order != 0) return order;
|
||||
return a[1] - b[1];
|
||||
}
|
||||
stabilizedThis.sort(stableCmp);
|
||||
for (let i=0; i<this.length; i++) {
|
||||
this[i] = stabilizedThis[i][0];
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
function insertAtEnd(myField, myValue) {
|
||||
myField.value += myValue;
|
||||
}
|
||||
@@ -76,15 +95,32 @@ window.onclick = function(event) {
|
||||
}
|
||||
}
|
||||
|
||||
function sortMarkdown() {
|
||||
function sortMarkdown(boughtOrder=false) {
|
||||
var divs = document.getElementsByClassName("entry");
|
||||
divs = Array.prototype.slice.call(divs, 0);
|
||||
divs.sort(function(a, b) {
|
||||
return a.children[1].innerHTML.localeCompare(b.children[1].innerHTML);
|
||||
});
|
||||
if (boughtOrder) {
|
||||
divs.stableSort(orderStringSorter);
|
||||
} else {
|
||||
divs.stableSort(fullStringSorter);
|
||||
}
|
||||
var parent = document.getElementById('entry_loop');
|
||||
parent.innerHTML = "";
|
||||
for(var i = 0, l = divs.length; i < l; i++) {
|
||||
parent.appendChild(divs[i]);
|
||||
}
|
||||
}
|
||||
function fullStringSorter(a,b) {
|
||||
var aValue=a.children[1].innerHTML;
|
||||
var bValue=b.children[1].innerHTML;
|
||||
if (aValue < bValue) return -1;
|
||||
if (aValue > bValue) return 1;
|
||||
return 0;
|
||||
}
|
||||
function orderStringSorter(a,b) {
|
||||
var aValue=a.children[1].innerHTML.substring(0,3);
|
||||
var bValue=b.children[1].innerHTML.substring(0,3);
|
||||
if ( aValue == "[x]" && bValue == "[ ]" ) return 1;
|
||||
if ( aValue == "[ ]" && bValue == "[x]" ) return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user