tmvictor-triggers-desc

对Tmvictor的触发器增加备注框,目前没有导入导出功能,请手动复制粘贴 F12 -> Application -> storage -> Local Storage -> triggers-desc 的配置到其他浏览器

当前为 2021-07-03 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name tmvictor-triggers-desc
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0.1
  5. // @description 对Tmvictor的触发器增加备注框,目前没有导入导出功能,请手动复制粘贴 F12 -> Application -> storage -> Local Storage -> triggers-desc 的配置到其他浏览器
  6. // @author 天使不见时
  7. // @match https://likexia.gitee.io/evolve/
  8. // @grant none
  9. // @require https://code.jquery.com/jquery-3.4.1.min.js
  10. // @require https://code.jquery.com/ui/1.12.1/jquery-ui.min.js
  11. // ==/UserScript==
  12.  
  13. /** 数据保存的key */
  14. const DATA_KEY = "triggers-desc";
  15. /** 监听间隔 */
  16. var LISTENER_TIME = 1000;
  17.  
  18. (function () {
  19. console.log("加载TMVictor(新)触发器备注框插件");
  20.  
  21. let interval = setInterval(function () {
  22.  
  23. // 整个脚本加载后才处理
  24. let item = $("#script_triggerSettings");
  25. if (!item || item.length === 0) {
  26. return;
  27. }
  28.  
  29. // 没有生成过备注框才加载
  30. let descTitle = $('#script_triggerSettings tbody:first tr:last-child th').eq(-3).text();
  31. if (descTitle !== '备注') {
  32. creatTriggersDesc();
  33. // 销毁定时器
  34. window.clearTimeout(interval)
  35. }
  36. }, LISTENER_TIME)
  37. })();
  38.  
  39. /**
  40. * 创建触发器的备注框
  41. */
  42. function creatTriggersDesc() {
  43.  
  44. // 创建备注标题
  45. let descTitle = $('<th class="has-text-warning" style="width:11%">备注</th>');
  46. $('#script_triggerSettings tbody:first tr:last-child th').eq(-3).after(descTitle);
  47.  
  48. // 加载本地数据库中保存的备注数据
  49. let data = loadData();
  50. // 创建备注框
  51. $('#script_triggerTableBody').find('tr').each(function () {
  52.  
  53. // 获取该行的id,用于记录对应行的备注
  54. let id = $(this).attr('value');
  55.  
  56. // 构建备注框
  57. let triggersDesc = $('<td style="width:11%"><input type="text" class="input is-small" style="width:100%" value="' + loadById(data, id) + '"></td>');
  58.  
  59. // 绑定onchange事件
  60. $(triggersDesc).find('input:last-child').on('change', function () {
  61. // 获取备注框中输入值
  62. let value = $(this).val();
  63. // 加载本地数据库中保存的备注数据
  64. let data = loadData();
  65. // 记录并保存备注数据
  66. data[id] = value;
  67. saveData(data);
  68. });
  69.  
  70. // 插入备注框
  71. $(this).find('td').eq(-3).after(triggersDesc);
  72. });
  73. }
  74.  
  75. /**
  76. * 从data中根据id获取值
  77. * @param data
  78. * @param id
  79. * @return {string}
  80. */
  81. function loadById(data, id) {
  82. let value = data[id];
  83. return value ? value : '';
  84. }
  85.  
  86. /**
  87. * 保存数据
  88. * @param data 需要保存的数据
  89. */
  90. function saveData(data) {
  91. let localStorage = getLocalStorage();
  92. localStorage[DATA_KEY] = JSON.stringify(data);
  93. }
  94.  
  95. /**
  96. * 加载数据
  97. * @return 数据
  98. */
  99. function loadData() {
  100. let localStorage = getLocalStorage();
  101. let data = localStorage[DATA_KEY];
  102. // 初始化数据库key
  103. if (!data) {
  104. data = '{}';
  105. localStorage[DATA_KEY] = data;
  106. }
  107. return $.parseJSON(data);
  108. }
  109.  
  110. /**
  111. * 获取本地存储器
  112. * @returns {*} 本地存储器
  113. */
  114. function getLocalStorage() {
  115.  
  116. let localStorage = window.localStorage;
  117. if (!localStorage) {
  118. alert("[tmvictor-triggers-desc]提示:浏览器不支持使用本插件,请更新您的浏览器版本至最新版本!!!");
  119. return;
  120. }
  121.  
  122. return localStorage;
  123. }