Tempermonkey脚本 - XXL JOB 记住执行器与分页大小

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();
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值