NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Filter Ideabox // @namespace PXgamer // @version 0.3 // @description Sort ideabox ideas by different methods // @author PXgamer // @include *kat.cr/ideabox/* // @grant none // ==/UserScript== /*jshint multistr: true */ (function() { 'use strict'; var rows = []; $('.buttonsline.floatleft').append('<select id="sortIdeas-select" style="letter-spacing: 0px; width: 220px !important;"><option value="all">Show all</option><option value="az">Sort Alphabetically (A-Z)</option><option value="no">Sort by Age (Newest to Oldest)</option><option value="views">Sort by Views (High to Low)</option></select> <button class="siteButton bigButton" id="sortIdeas"><span>Sort</span></button>'); $('.ideaBox').each(function(){ var html = $(this).html(); var title = $('.ideaBoxBody h3 a', $(this)).text(); var age = $('.ideaBoxBody div.lightgrey:last', $(this)).html().split('</span> ')[6].trim(); var views = parseInt($('.ideaBoxBody div.lightgrey:last', $(this)).html().split('</span> ')[2].split(' views')[0], 10); rows.push({"title":title,"age":age,"views":views,"html":html}); }); console.log(rows); $('#sortIdeas').on('click', function() { var ideaSortType = $('#sortIdeas-select').val(); switch (ideaSortType) { case 'all': $('div.ideaBox').show(); break; case 'az': // Sort alphabetically (A-Z) $('div.ideaBox').show(); sortIdeas('title', 'desc'); break; case 'no': // Sort by age (Newest to Oldest) $('div.ideaBox').show(); sortIdeas('age', 'desc'); break; case 'views': // Sort by views (High to Low) $('div.ideaBox').show(); sortIdeas('views', 'desc'); break; default: $('div.ideaBox').show(); break; } }); function sortByKey(array, key) { return array.sort(function(a, b) { var x = a[key]; var y = b[key]; if (typeof x == "string") { x = x.toLowerCase(); y = y.toLowerCase(); } return ((x < y) ? -1 : ((x > y) ? 1 : 0)); }); } function sortIdeas(sortName, sortType) { sortByKey(rows, sortName); if (sortName !== 'views') { rows.reverse(); } $('div.ideaBox').remove(); for (var i=0;i<rows.length;i++) { $('.buttonsline.floatleft').after('<div class="ideaBox">'+rows[i].html+'</div>'); } } })();