GRO Index Search Helper

Adds additional functionality to the UK General Register Office (GRO) BMD index search

当前为 2016-11-05 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name GRO Index Search Helper
  3. // @description Adds additional functionality to the UK General Register Office (GRO) BMD index search
  4. // @namespace cuffie81.scripts
  5. // @include https://www.gro.gov.uk/gro/content/certificates/indexes_search.asp
  6. // @version 1.1
  7. // @grant none
  8. // @require https://code.jquery.com/jquery-2.2.4.min.js
  9. // ==/UserScript==
  10.  
  11. this.$ = this.jQuery = jQuery.noConflict(true);
  12.  
  13.  
  14. $(document).ready(function()
  15. {
  16. // Hide the reset button
  17. $("form[name='SearchIndexes'] input[type='submit'][value='Reset']").hide();
  18. // Hide superflous text
  19. $("table[summary*='contains the search form fields'] > tbody > tr:nth-of-type(3) td.main_text[colspan='5']").parent().hide();
  20. // Add gender and year navigation buttons, and style them
  21. var searchButton = $("form[name='SearchIndexes'] input[type='submit'][value='Search']")
  22. $("<input class='formButton' id='mygroBtnGenderToggle' type='button' value='Gender' />").insertBefore($(searchButton));
  23. $("<input class='formButton' id='mygroBtnYearsPrev' type='button' value='&lt; Years' />").insertBefore($(searchButton));
  24. $("<input class='formButton' id='mygroBtnYearsNext' type='button' value='Years &gt;' />").insertBefore($(searchButton));
  25.  
  26. var buttonContainer = $("form[name='SearchIndexes'] input[type='submit'][value='Search']").closest("td");
  27. $(buttonContainer).css("padding-bottom", "10px");
  28. $(buttonContainer).find("input[type='button']").css("margin-right", "20px");
  29. $(buttonContainer).find("input[type='submit'], input[type='button']").css("min-width", "100px").css("font-size", "13px").css("padding", "4px 10px");
  30. // Handle button click handlers
  31. $("input#mygroBtnYearsPrev").click(function() { mygro_NavigateYears(false); });
  32. $("input#mygroBtnYearsNext").click(function() { mygro_NavigateYears(true); });
  33. $("input#mygroBtnGenderToggle").click(function() { mygro_ToggleGender(); });
  34.  
  35. });
  36.  
  37. function mygro_ToggleGender()
  38. {
  39. var curGender = $("form[name='SearchIndexes'] select#Gender").val();
  40. $("form[name='SearchIndexes'] select#Gender").val((curGender === "F" ? "M" : "F"));
  41. $("form[name='SearchIndexes'] input[type='submit'][value='Search']").click();
  42. }
  43.  
  44. function mygro_NavigateYears(forward)
  45. {
  46. // Get min and max years
  47. var minYear = parseInt($("form[name='SearchIndexes'] select#Year option:eq(2)").val(), 10);
  48. var maxYear = parseInt($("form[name='SearchIndexes'] select#Year option:last").val(), 10);
  49. //console.log("Year range: %s - %s", minYear, maxYear);
  50. if (!isNaN(minYear) && !isNaN(maxYear))
  51. {
  52. // Read current year and range
  53. var curYear = parseInt($("form[name='SearchIndexes'] select#Year").val(), 10);
  54. var curRange = parseInt($("form[name='SearchIndexes'] select#Range").val(), 10);
  55.  
  56. if (!isNaN(curYear) && !isNaN(curRange))
  57. {
  58. // Calculate the new year
  59. var step = (curRange * 2) + 1;
  60. var newYear = (forward ? curYear+step : curYear-step);
  61. newYear = Math.min(Math.max(newYear, minYear), maxYear);
  62. // Update the year and submit the search
  63. $("form[name='SearchIndexes'] select#Year").val(newYear);
  64. $("form[name='SearchIndexes'] input[type='submit'][value='Search']").click();
  65. }
  66. //console.log("Current year: %d +-%d (%d-%d), New year: %d (%d-%d)", curYear, curRange, curYear-curRange, curYear+curRange, newYear, newYear-curRange, newYear+curRange);
  67. }
  68. }
  69.