userscripts

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Last revisionBoth sides next revision
userscripts [2019/01/17 21:48] – created dondarknessuserscripts [2019/01/17 21:52] dondarkness
Line 1: Line 1:
 Userscript for Tampermonkey:\\ Userscript for Tampermonkey:\\
 \\ \\
-Sorts Events by City then Event:\\ +[[https://www.anomalysite.com/download/events.js|Sorts Events by City then Event]]
-\\ +
-// ==UserScript==\\ +
-// @name         TheGrid MyEvents : sort Events by City\\ +
-// @namespace    https://the-grid.org/r/?page=myevents\\ +
-// @version      1.0\\ +
-// @description  sorts Events by City then Event\\ +
-// @author       XandrexGress in Ingress // @xandrex on Telegram\\ +
-// @match        https://the-grid.org/r/?page=myevents*\\ +
-// @grant        none\\ +
-// ==/UserScript== +
- +
-(function() { +
- +
-'use strict';\\ +
-//console.log ('----start----');\\ +
-xdx();\\ +
-//console.log ('----end----'); +
- +
-/* main\\ +
-*/\\ +
-function xdx() {\\ +
-  parseSortAndReplace(document);\\ +
-}\\ +
-// END function xdx() +
- +
-/* get the select that has an id which ends with _id\\ +
-* for each optgroup in it, for each option it in :\\ +
-*  - create a new option with "city + event" as key and HTML text\\ +
-*  - delete the original option inside the optgroup\\ +
-*  - store it in an array\\ +
-*  - sort the array by the keys\\ +
-*  - add the new option to the select\\ +
-*\\ +
-* for later : find a way to delete the optgroup within the select element\\ +
-*/\\ +
-function parseSortAndReplace(myDocument) { +
- +
-  // get select with id like _id\\ +
-  //console.log ('start parseSortAndReplace');\\ +
- let nodesSnapshot = myDocument.evaluate(\\ +
-    '//select[contains(@id,"_id")]' // warning : ends-with() is not available in XPath 1.0\\ +
- , myDocument, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null\\ +
- );\\ +
- let nbrSelects = nodesSnapshot.snapshotLength;\\ +
-  //console.log ('nbrSelects:'+nbrSelects); +
- +
-  if (1==nbrSelects) {\\ +
-      const mySelect = nodesSnapshot.snapshotItem(0);\\ +
-      const myChildrenCardinal = mySelect.childNodes.length;\\ +
-      //console.log ('mySelect children cardinal: '+myChildrenCardinal);\\ +
-      if (0!=myChildrenCardinal) { +
- +
-          const myNewEventsList = new Array;\\ +
-          //console.log (myNewEventsList); +
- +
-          // for each optgroup\\ +
-          //console.log ('Enter foreach optgroup loop');\\ +
-          //for (let i=0; i<myChildrenCardinal ; i++) {\\ +
-          for (let i=0; i<myChildrenCardinal ; i++) { // DEBUG\\ +
-              let myOptGroup = mySelect.childNodes[i];\\ +
-              //console.log('lala '+i);\\ +
-                  //console.log (myOptGroup);\\ +
-              if ( (undefined!=myOptGroup) && ('OPTGROUP'==myOptGroup.tagName)) {\\ +
-                  let myCategory = myOptGroup.getAttribute('label');\\ +
-                  //console.log ('---category:'+myCategory);\\ +
-                  let myEventsCardinal = myOptGroup.childNodes.length;\\ +
-                  //console.log ('size:'+myEventsCardinal);\\ +
-                  // for each option in optgroup\\ +
-                  for (let j=0 ; j<myEventsCardinal ; j++) {\\ +
-                      let myEvent = myOptGroup.childNodes[j];\\ +
-                      if ((undefined!=myEvent) && ('OPTION'==myEvent.tagName)) {\\ +
-                          let myValue = myEvent.getAttribute('value');\\ +
-                          let myCity  = myEvent.innerHTML;\\ +
-                          //console.log (myCity + '/' + myCategory + '/'+ myValue );\\ +
-                          // create new OPTION\\ +
-                          let myOption = myDocument.createElement('option');\\ +
-                              myOption.setAttribute ('value',myValue);\\ +
-                              myOption.appendChild  (myDocument.createTextNode(myCity + ': '+ myCategory));\\ +
-                          // store as city / optgroup / value into an array\\ +
-                          let myObject = {\\ +
-                                key   : myCity+'¤'+myCategory\\ +
-                              , htmlOpt: myOption\\ +
-                          };\\ +
-                          //console.log (myObject);\\ +
-                          myNewEventsList.push (myObject);\\ +
-                          // delete the option in the optgroup\\ +
-                          myEvent.parentNode.removeChild (myEvent); // until I find a way to delete the original categories\\ +
-                      }\\ +
-                      // END IF\\ +
-                  }\\ +
-                  // END FOR myEventsCardinal +
- +
-                  // delete the optgroup\\ +
-                  //myOptGroup.parentNode.removeChild(myOptGroup);\\ +
-                  //mySelect.childNodes[i].parentNode.removeChild (mySelect.childNodes[i]);\\ +
-              }\\ +
-              // END IF\\ +
-          }\\ +
-          // END FOR myChildrenCardinal\\ +
-          //console.log ('before sort');\\ +
-          //console.log (myNewEventsList); +
- +
-          // sort the list\\ +
-          myNewEventsList.sort(function(a,b) {\\ +
-              const keyA = a.key.toUpperCase();\\ +
-              const keyB = b.key.toUpperCase();\\ +
-              if        (keyA < keyB) { return  1;\\ +
-              } else if (keyA > keyB) { return -1;\\ +
-              } else                  { return  0;\\ +
-              }\\ +
-              // END IF\\ +
-          });\\ +
-          // END SORT +
- +
-          //console.log ('after sort');\\ +
-          //console.log (myNewEventsList);\\ +
-          //console.log (myNewEventsList.length); +
- +
-          // for each item in list, add to select\\ +
-          myNewEventsList.forEach( function(myObject2) {\\ +
-              //console.log (myObject2.htmlOpt);\\ +
-              //mySelect.appendChild(myObject2.htmlOpt);\\ +
-              mySelect.insertBefore(myObject2.htmlOpt,mySelect.firstChild); // until I find a way to delete the original categories in the select\\ +
-          });\\ +
-          // END foreach\\ +
-      }\\ +
-      // END if (0!=myChildrenCardinal)\\ +
-  }\\ +
-  // END if (1==nbrSelects)\\ +
-}\\ +
-// END function parseSortAndReplace(myDocument) +
- +
-})();+