您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
"魔改 airflow2.9.3 的显示"
// ==UserScript== // @name airflow2.9.3 // @namespace thedream // @description "魔改 airflow2.9.3 的显示" // @version 2.9.3 // @include http://airflow-ins1.thedream.cc/* // @include http://airflow-ins2.thedream.cc/* // @grant none // @author thedream // ==/UserScript== (function () { 'use strict'; var dtd = null; function addMenu() { console.log("执行: addMenu") var $ul = $(".navbar-nav .dropdown").eq(1).find("ul") $ul.find('li').eq(4).after('<li><a href="/taskinstance/list/?_oc_TaskInstanceModelView=start_date&_od_TaskInstanceModelView=desc" data-original-title="" title="">Task Instances (Ordered)</a></li>') $ul.find('li').eq(5).after('<li><a href="/taskinstance/list/?_flt_3_state=failed&_oc_TaskInstanceModelView=start_date&_od_TaskInstanceModelView=desc" data-original-title="" title="">Task Instances (Failed)</a></li>') } function deleteTh() { if (!location.pathname.startsWith('/taskinstance/list')) { return } console.log("执行: deleteTh") var len = 0 do { var $ths = $(".table thead tr th") var $name = $($ths[len]).find('a').text().replace(/\s*/g, "") // console.log('name: ' + $name) var $name1 = $($ths[len]).text().replace(/\s*/g, "") // console.log('name1: ' + $name1) if ($name == 'QueuedByJobId' || $name1 == "ExternalExecutorId" || $name == 'Pool' || $name == 'Queue' || $name == 'Unixname' || $name == 'Hostname' || $name == 'RunId' || $name == 'MapIndex' || $name == 'LogicalDate' || $name1 == 'Note' || $name == 'JobId') { $($ths[len]).remove() deleteTd(len) } else { len++ } } while (len < $ths.length) } function deleteTd(idx) { dtd = $.Deferred() var $trs = $(".table tbody tr") $trs.each(function () { var $td = $(this).find('td') $($td[idx]).remove() }) dtd.resolve(); return dtd } function addTitle() { if (!location.pathname.startsWith('/home')) { return } console.log("执行: addTitle") var $trs = $("body > div.container > div.row > div.dags-table-wrap > div > table > tbody > tr") $trs.each(function () { var txt = $(this).find("td").eq(1).find("a strong").text() var attrVal = $(this).find("td").eq(1).find("a").attr('data-original-title') if (attrVal) { $(this).find("td").eq(1).find("a strong").text(txt + ' - ' + attrVal + "") } }) } function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 var r = window.location.search.substr(1).match(reg); //匹配目标参数 if (r != null) return unescape(r[2]); return null; //返回参数值 } function setSearchParam() { let val = getUrlParam('_od_TaskInstanceModelView') $("#filter_form button").css({"height": "30px"}) $("#filter_form").append(` <a href="javascript:;" class="btn remove-filter" style="margin-left:5px;height: 30px;line-height: 16px;"><span class="close-icon"></span>根据 start date 排序: </a> <input name="_oc_TaskInstanceModelView" type="hidden" value="start_date"></input> <select name="_od_TaskInstanceModelView" value="" id="start_date_select" style="background-color:#ffffff;padding:0 8px;height: 30px;border-color:#ccc;outline: none; border-radius: 4px;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;color: #555555; width: 150px;line-height:16px;vertical-align:middle;margin-left:5px;" > <option value="desc">desc</option> <option value="asc">asc</option> </select>`) if (val === "asc") { $("#start_date_select").find('option').eq(1).attr("selected", "selected") } } addMenu() deleteTh() addTitle() let pathname = window.location.pathname if (pathname === "/taskinstance/list/") { setSearchParam() } })()