ServiceNow Domain Picker Sorter Beta

ServiceNow domain picker sorting for Geneva+. Sorts domains list by domain name and puts it at beginning.

  1. // ==UserScript==
  2. // @name ServiceNow Domain Picker Sorter Beta
  3. // @namespace http://ogieglo.pl/r/sn-domain-sort
  4. // @description ServiceNow domain picker sorting for Geneva+. Sorts domains list by domain name and puts it at beginning.
  5. // @include https://*.service-now.com/nav_to.do*
  6. // @include https://*.service-now.com/navpage.do*
  7. // @version 20161116.26
  8. // ==/UserScript==
  9.  
  10.  
  11. function ogiSort(a, b) {
  12. var nameA2 = a['text'].toLowerCase().split('/').pop();
  13. var nameB2 = b['text'].toLowerCase().split('/').pop();
  14.  
  15. return nameA2.localeCompare(nameB2);
  16. }
  17.  
  18. function ogiSortSelect(selElem) {
  19. var tmpSel = selElem.options[selElem.selectedIndex].value
  20. var tmpAry = [];
  21. for (var i=0;i<selElem.options.length;i++) {
  22. tmpAry[i] = [];
  23. tmpAry[i]['text'] = selElem.options[i].text;
  24. tmpAry[i]['value'] = selElem.options[i].value;
  25. }
  26. tmpAry.sort(ogiSort);
  27. while (selElem.options.length > 0) {
  28. selElem.options[0] = null;
  29. }
  30. for (var i=0; i<tmpAry.length; i++) {
  31. var makeSel = tmpSel == tmpAry[i]['value'];
  32. var newFullText = tmpAry[i]['text'].indexOf('/') > 0 ? tmpAry[i]['text'].split('/').pop() + " | " + tmpAry[i]['text'] : tmpAry[i]['text'];
  33. var op = new Option(newFullText , tmpAry[i]['value'], makeSel, makeSel);
  34. selElem.options[i] = op;
  35. }
  36. }
  37.  
  38. function ogiDomainPickerSort(){
  39. var ogiElDomainPicker = document.getElementById('domain_picker_select');
  40. if (ogiElDomainPicker != null) {
  41. ogiSortSelect(ogiElDomainPicker);
  42. }
  43. }
  44.  
  45. /* Loop/interval check if domain picker list is loaded/populated */
  46. var ogiDomainOptionsWatch = setInterval(function () {
  47. var ogiElDomainPicker = document.getElementById('domain_picker_select');
  48. if (ogiElDomainPicker != null && ogiElDomainPicker.length > 1) {
  49. ogiSortSelect(ogiElDomainPicker);
  50. clearInterval(ogiDomainOptionsWatch);
  51. }
  52. }, 2000);
  53.