Sort confluence "My Spaces" alphabetically

Alphabetically Sort confluence "My Spaces"

  1. // ==UserScript==
  2. // @name Sort confluence "My Spaces" alphabetically
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.01
  5. // @description Alphabetically Sort confluence "My Spaces"
  6. // @author You
  7. // @match https://*/*
  8. // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
  9. // @grant none
  10. // @require https://code.jquery.com/jquery-3.6.3.min.js
  11. // @license MIT
  12. // ==/UserScript==
  13.  
  14. /* global jQuery */
  15.  
  16. function capitalizeFirstLetter(val) {
  17. return val.charAt(0).toUpperCase() + val.toLowerCase().slice(1);
  18. }
  19.  
  20. jQuery(function(){
  21. 'use strict';
  22.  
  23. setTimeout(() => {
  24. let mySpaces = {};
  25. let list = jQuery('#sidebar-spaces').find('ul:first');
  26.  
  27. list.find('li').each(function(){
  28. let val = jQuery(this).html();
  29. let name = capitalizeFirstLetter(jQuery(this).find('.aui-nav-item-label').html());
  30. mySpaces[name] = val;
  31. });
  32.  
  33. const mySpacesOrdered = Object.keys(mySpaces).sort().reduce(
  34. (obj, key) => {
  35. obj[key] = mySpaces[key];
  36. return obj;
  37. },
  38. {}
  39. );
  40.  
  41. list.html('');
  42. for (const [name, value] of Object.entries(mySpacesOrdered)) {
  43. jQuery('<li class="item" />').append(value).appendTo(list);
  44. }
  45. }, "500");
  46.  
  47. });