您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Sorts Github repositories.
当前为
- // ==UserScript==
- // @name Github Repository Sorter
- // @namespace http://sunnyrodriguez.com/
- // @version 0.1
- // @description Sorts Github repositories.
- // @author splttingatms
- // @match http*://*github.com/*
- // @exclude http*://*github.com/*/*
- // @grant none
- // @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
- // @require https://greasyfork.org/scripts/1003-wait-for-key-elements/code/Wait%20for%20key%20elements.js?version=49342
- // ==/UserScript==
- (function() {
- 'use strict';
- function parseRepoStat(repo, stat) {
- return parseInt(repo.querySelector('[aria-label="' + stat + '"]').text.trim().replace(/,/g, ""));
- }
- function sortBy(stat) {
- var repoCollection = document.getElementsByClassName("repo-list-item");
- var repos = Array.prototype.slice.call(repoCollection);
- repos.sort(function(a, b){
- var starsA = parseRepoStat(a, stat);
- var starsB = parseRepoStat(b, stat);
- return starsA - starsB; // sort low to high
- });
- var list = document.getElementsByClassName("repo-list")[0];
- for (var i = 1; i < repos.length; i++) {
- list.insertBefore(repos[i], list.children[0]); // insert before reverses list to high to low
- }
- }
- function createSortButtonByStat(stat) {
- var item = document.createElement("li");
- item.classList.add("right");
- item.classList.add("ml-3");
- item.style = "list-style-type: none";
- var link = document.createElement("a");
- link.text = "Sort by " + stat;
- link.onclick = function() {
- sortBy(stat);
- var items = document.getElementById("sort-bar").getElementsByTagName("li");
- for (var i = 0; i < items.length; i++) {
- items[i].classList.remove("filter-selected");
- }
- item.classList.add("filter-selected");
- };
- item.appendChild(link);
- return item;
- }
- function addSortButtonsTo(parent) {
- var para = document.createElement("p");
- para.id = "sort-bar";
- var list = document.createElement("ul");
- list.classList.add("right");
- var forkSortButton = createSortButtonByStat("Forks");
- list.appendChild(forkSortButton);
- var starSortButton = createSortButtonByStat("Stargazers");
- list.appendChild(starSortButton);
- para.appendChild(list);
- console.log($(parent));
- document.getElementsByClassName(parent)[0].appendChild(para);
- }
- function isRepositoryTab(jNode) {
- return jNode[0].children[0].classList.contains("repo-tab");
- }
- function isOrganizationPage() {
- return $(".org-name").length > 0;
- }
- // Execute
- if (isOrganizationPage()) {
- addSortButtonsTo("org-toolbar");
- } else {
- waitForKeyElements (".js-repo-filter", function(jNode) {
- if (isRepositoryTab(jNode)) {
- addSortButtonsTo("filter-bar");
- }
- });
- }
- })();