Sparql to QuickStatements

Copy commands from Sparql to QuickStatements

  1. // ==UserScript==
  2. // @name Sparql to QuickStatements
  3. // @namespace https://greasyfork.org/users/21515
  4. // @version 0.1.1
  5. // @description Copy commands from Sparql to QuickStatements
  6. // @author CennoxX
  7. // @homepage https://github.com/CennoxX/userscripts
  8. // @supportURL https://github.com/CennoxX/userscripts/issues/new?title=[Sparql%20to%20QuickStatements]%20
  9. // @match https://query.wikidata.org/
  10. // @match https://quickstatements.toolforge.org/
  11. // @icon https://www.google.com/s2/favicons?sz=64&domain=wikidata.org
  12. // @grant GM_setValue
  13. // @grant GM_getValue
  14. // @license MIT
  15. // ==/UserScript==
  16. /* jshint esversion: 10 */
  17. /* eslint quotes: ["warn", "double", {"avoidEscape": true}] */
  18. /* eslint curly: "off" */
  19.  
  20. (function() {
  21. "use strict";
  22. if (location.host == "query.wikidata.org") {
  23. GM_setValue("qsLastTimeOpened",0);
  24. var oldResponse = "";
  25. var mainLoop = setInterval(function(){
  26. var response = document.getElementById("response-summary").innerText;
  27. if (response && oldResponse != response){
  28. oldResponse = response;
  29. console.clear();
  30. if (!document.getElementById("qs-run")){
  31. addQSButton();
  32. }
  33. }
  34. }, 500);
  35.  
  36. function addQSButton(){
  37. var navbar = document.getElementsByClassName("navbar navbar-default result")[0].getElementsByClassName("nav navbar-nav navbar-right")[0];
  38. var liNode = document.createElement("li");
  39. liNode.innerHTML = '<a id="qs-run" class="btn" data-toggle="modal" title="Copy to QuickStatements"><span class="fa fa-rocket"></span><span> QuickStatements</span></a>';
  40. navbar.appendChild(liNode);
  41. liNode.addEventListener("click", function() {startQuickStatements();});
  42. }
  43.  
  44. function startQuickStatements(){
  45. var commands = document.querySelector(".fixed-table-body tbody").innerText;
  46. GM_setValue("quickstatements",commands);
  47. document.querySelector("#qs-run>span").style.color="#14866d";
  48. var qsLastTimeOpened = GM_getValue("qsLastTimeOpened");
  49. var oneSecondbefore = new Date().getTime() - 1000;
  50. if (oneSecondbefore > qsLastTimeOpened){
  51. window.open("https://quickstatements.toolforge.org/#/batch", "_blank").focus();
  52. }
  53. }
  54.  
  55. } else if (location.host == "quickstatements.toolforge.org"){
  56. var quickstatements = "";
  57. var evt = document.createEvent("HTMLEvents");
  58. evt.initEvent("input", false, true);
  59. var checkForChanges = setInterval(function() {
  60. var quickForm = document.querySelector("textarea.form-control");
  61. if (quickForm){
  62. GM_setValue("qsLastTimeOpened", new Date().getTime());
  63. }
  64. if (quickstatements) {
  65. if (!quickForm.innerHTML.includes(quickstatements)){
  66. quickForm.innerHTML += quickstatements + "\n";
  67. quickForm.innerHTML = quickForm.innerHTML.replace("||\n","||");
  68. quickForm.dispatchEvent(evt);
  69. }
  70. GM_setValue("quickstatements","");
  71. quickstatements = "";
  72. }else{
  73. quickstatements = GM_getValue("quickstatements");
  74. }
  75. }, 250);
  76. }
  77. })();