Solr Admin Helper

Options

当前为 2014-07-18 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Solr Admin Helper
  3. // @author Hang Yuan
  4. // @namespace hyuan.solr
  5. // @description Options
  6. // @include //cdnjs.cloudflare.com/ajax/libs/require.js/2.1.14/require.min.js
  7. // @version 1
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. require.config({
  12. packages: [
  13. { name: 'jquery', location: '//code.jquery.com/jquery-2.1.1.min', main: 'jquery-2.1.1.min' }
  14. , { name: 'jqueryui', location: '//code.jquery.com/ui/1.11.0', main: 'jquery-ui' }
  15. , { name: 'css', location: '//cdnjs.cloudflare.com/ajax/libs/require-css/0.1.1', main: 'css' }
  16. , { name: 'domReady', location: '//cdnjs.cloudflare.com/ajax/libs/require-domReady/2.0.1', main: 'domReady.min' }
  17. ]
  18. , shim: {
  19. 'jquery': { exports: 'jquery' }
  20. , 'jqueryui': { exports: 'jqueryui', deps: ['jquery', 'css!jqueryui/themes/smoothness/jquery-ui'] }
  21. }
  22. , map: {
  23. '*': {
  24. 'css': 'css' // or whatever the path to require-css is
  25. }
  26. }
  27. });
  28.  
  29. require(['jquery', 'jqueryui', 'css!jqueryui/themes/smoothness/jquery-ui', 'domReady'], function($) {
  30. $(document).ready(function() {
  31. $(document).on('click', function() {
  32. if ($('#solrRecordModifier').length > 0) {
  33. return;
  34. }
  35. function getSelection() {
  36. if (window.getSelection) {
  37. return window.getSelection().toString();
  38. } else if (document.selection && document.selection.type != "Control") {
  39. return document.selection.createRange().text;
  40. }
  41. }
  42. function deleteRecord(id) {
  43. var command = {
  44. "delete": { "id": id }
  45. };
  46. return $.ajax({
  47. url: "http://localhost:8983/solr/feedback/update/?commit=true"
  48. , type : 'POST'
  49. , contentType : 'application/json'
  50. , dataType : 'json'
  51. , data: JSON.stringify(command)
  52. });
  53. }
  54. function modifyRecord(id, field, value) {
  55. var record = {};
  56. record.id = id;
  57. record[field] = { "set": value };
  58. return $.ajax({
  59. url: "http://localhost:8983/solr/feedback/update/?commit=true"
  60. , type : 'POST'
  61. , contentType : 'application/json'
  62. , dataType : 'json'
  63. , data: JSON.stringify([record])
  64. });
  65. }
  66. function setUpModifyButton() {
  67. var $modifyRecordDialog = $('<div title="Modify Record">'
  68. + '<div class="form"><form><fieldset><div class="fieldset">'
  69. + '<label for="solrRecordModifier_id">ID</label>'
  70. + '<input type="text" name="solrRecordModifier_id" id="solrRecordModifier_id" value="" class="text ui-widget-content ui-corner-all" size="70">'
  71. + '<label for="solrRecordModifier_field">Field</label>'
  72. + '<input type="text" name="solrRecordModifier_field" id="solrRecordModifier_field" value="" class="text ui-widget-content ui-corner-all" size="70">'
  73. + '<label for="solrRecordModifier_value">New Value</label>'
  74. + '<input type="text" name="solrRecordModifier_value" id="solrRecordModifier_value" value="" class="text ui-widget-content ui-corner-all" size="70">'
  75. + '<input type="submit" tabindex="-1" style="position:absolute; top:-1000px">'
  76. + '</div></fieldset></from></div>'
  77. + '</div>');
  78. var $idInput = $modifyRecordDialog.find('#solrRecordModifier_id');
  79. var $fieldInput = $modifyRecordDialog.find('#solrRecordModifier_field');
  80. var $valueInput = $modifyRecordDialog.find('#solrRecordModifier_value');
  81. var modifyBtn = $('<button id="solrRecordModifier">Modify</button>');
  82. modifyBtn.insertBefore($('div#wrapper'));
  83. modifyBtn.click(function() {
  84. $idInput.val(getSelection());
  85. $modifyRecordDialog.dialog({
  86. resizable: true,
  87. width:530,
  88. height:300,
  89. modal: true,
  90. buttons: {
  91. "Submit": function() {
  92. var dialog = this;
  93. modifyRecord($idInput.val(), $fieldInput.val(), $valueInput.val())
  94. .done(function() {
  95. $( dialog ).dialog( "close" );
  96. });
  97. },
  98. Cancel: function() {
  99. $( this ).dialog( "close" );
  100. }
  101. }
  102. });
  103. });
  104. }
  105. function setUpDeleteButton() {
  106. var $deleteRecordDialog = $('<div title="Delete Record">'
  107. + '<p>Are sure to delete the record</p>'
  108. + '<div class="form"><form><fieldset><div class="fieldset">'
  109. + '<label for="solrRecordDeleter_id">ID</label>'
  110. + '<input type="text" name="solrRecordDeleter_id" id="solrRecordDeleter_id" value="" class="text ui-widget-content ui-corner-all" size="70">'
  111. + '</div></fieldset></from></div>'
  112. + '</div>');
  113. var $idInput = $deleteRecordDialog.find('#solrRecordDeleter_id');
  114. var deleteBtn = $('<button id="solrRecordDeleter">Delete</button>');
  115. deleteBtn.insertBefore($('div#wrapper'));
  116. deleteBtn.click(function() {
  117. $idInput.val(getSelection());
  118. $deleteRecordDialog.dialog({
  119. resizable: true,
  120. width:530,
  121. height:300,
  122. modal: true,
  123. buttons: {
  124. "Delete": function() {
  125. var dialog = this;
  126. deleteRecord($idInput.val())
  127. .done(function() {
  128. $( dialog ).dialog( "close" );
  129. });
  130. },
  131. Cancel: function() {
  132. $( this ).dialog( "close" );
  133. }
  134. }
  135. });
  136. });
  137. }
  138. setUpModifyButton();
  139. setUpDeleteButton();
  140. });
  141. //document.body.innerHTML = document.body.innerHTML.replace('Request-Handler \(qt\)', 'Request-Handler (qt) - Anthony');
  142. });
  143.  
  144. });