Tempermonkey脚本 - XXL JOB 记住执行器与分页大小
XXLJOB 默认不会记住上一次选择的执行器与分页大小, 每次都要重新选择, 很烦人
虽然执行器是通过 URL 参数传递的, 但是从浏览器输地址时不一定就是上一次选择的执行器对应的 URL, 并且分页大小无法控制, 默认是最小的 10
简单写个脚本, 用 localStorage 把上次选择的内容记录下来, 进页面的时候直接刷
使用前需要把
@match
中的your-xxl-job-domain
替换成 XXL JOB 部署的对应域名
// ==UserScript==
// @name XXL Job Helper
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Remember the page size of Task Manage Page in XXL Job
// @author 萧离
// @match http://your-xxl-job-domain/xxl-job-admin/jobinfo*
// @grant none
// ==/UserScript==
/*
Features:
1. 任务管理页面, 记住上一次选择的执行器
2. 任务管理页面, 记住上一次选择的每页 X 条记录
*/
const domain = document.domain;
function getParam() {
// 获取当前 URL 参数, 拿到?a=b&b=2, 然后截掉问号, 再根据&分割
const params = window.location.search.substr(1).split('&');
// 将 URL 参数解析为对象
var queryParams = {};
$.each(params, function(index, param) {
const k = param.split('=')[0];
const v = param.split('=')[1];
queryParams[k] = v;
});
return queryParams;
}
// 任务管理页面 - 每页 X 条记录
function initJobGroup() {
const rememberedJobGroupKey = domain + '::' + 'rememberedJobGroup';
const $JobGroupSelect = $("#jobGroup");
// 下次 change 时记录新选项
$JobGroupSelect.change(function(){
const selectedJobGroup = $JobGroupSelect.val();
localStorage.setItem(rememberedJobGroupKey, selectedJobGroup);
});
// 如果曾经选择过, 恢复
const rememberedJobGroup = localStorage.getItem(rememberedJobGroupKey);
if (rememberedJobGroup == undefined) {
return;
}
if ($JobGroupSelect.val() == rememberedJobGroup) {
return;
}
/*
$JobGroupSelect.val(rememberedJobGroup);
$JobGroupSelect.change();
*/
// 获取参数并修改
const queryParams = getParam();
queryParams.jobGroup = rememberedJobGroup;
// 将对象序列化为 URL 参数字符串
const newParams = $.param(queryParams);
// 重定向浏览器到更新后的 URL
window.location.href = window.location.pathname + '?' + newParams;
}
// 任务管理页面 - 每页 X 条记录
function initPageSize() {
const rememberedPageSizeKey = domain + '::' + 'rememberedPageSize';
const $PageSizeSelect = $("select[name$='job_list_length']");
// 下次 change 时记录新选项
$PageSizeSelect.change(function(){
const selectedPageSize = $PageSizeSelect.val();
localStorage.setItem(rememberedPageSizeKey, selectedPageSize);
});
// 如果曾经选择过, 恢复
const rememberedPageSize = localStorage.getItem(rememberedPageSizeKey);
if (rememberedPageSize == undefined) {
return;
}
if ($PageSizeSelect.val() == rememberedPageSize) {
return;
}
$PageSizeSelect.val(rememberedPageSize);
$PageSizeSelect.change();
}
$(document).ready(function() {
initJobGroup();
initPageSize();
});