airflow-hack2

"调整airflow菜单和表格列显示,设置查询参数start date"

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name     airflow-hack2
// @namespace thedream
// @description "调整airflow菜单和表格列显示,设置查询参数start date"
// @version  2.2.2
// @grant    none
// @include http://airflow.thedream.cc/*
// @include http://airflow.plat.x.thedream.cc:8180/*
// @include http://106.14.76.163:8092/*
// @include http://106.14.155.64:8092/*
// @author thedream
// ==/UserScript==

(function () {
  'use strict';

  var dtd = null;

  function addMenu(){
    var $ul = $(".navbar-nav .dropdown").eq(2).find("ul")
    $ul.find('li').eq(3).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(4).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(){
    var len = 0

    do{
      var $ths = $(".table thead tr th")
      var $name =$($ths[len]).find('a').text().replace(/\s*/g,"")
      var $name1 = $($ths[len]).text().replace(/\s*/g,"")
      if($name == 'QueuedByJobId' || $name1 == "ExternalExecutorId" || $name == 'Pool'|| $name == 'Queue'|| $name == 'Unixname'|| $name == 'Hostname'){
        $($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 === '/home'){
      var $trs = $("#main_content 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:10px;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;"
                                >
                            <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()
  }
})()