Virtonomica: автосортировка подразделений по колонке "специализация"

автосортировка подразделений по колонке "специализация"

目前為 2015-04-02 提交的版本,檢視 最新版本

// ==UserScript==
// @name           Virtonomica: автосортировка  подразделений по колонке "специализация"
// @namespace      virtonomica
// @version 	   1.1
// @description    автосортировка  подразделений по колонке "специализация"
// @include        http://*virtonomic*.*/*/main/company/view/*/unit_list
// @include        http://*virtonomic*.*/*/main/company/view/*
// ==/UserScript==

var run = function() {

    var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window);
    $ = win.$;
    
    function trim(str) {
        return str.replace(/^\s+|\s+$/g,"");
    }
    function getLvl(str) {
        var first = str.indexOf('</') + 4;
        var perc = trim(str.substr(0, first));

        var second = str.substr(first+1).indexOf('</') + 4;
        var lvl = parseInt(trim(str.substr(first+1, second)).replace("<b>","").replace("</b>","").replace(".",""),10);
      // console.log("'"+ lvl+"'" );
        return lvl;
    }
    function getName(str) {
        var first = str.indexOf('</') + 4;
        var perc = trim(str.substr(0, first));

        var second = str.substr(first+1).indexOf('</') + 4;
        var lvl = trim(str.substr(first+1, second));

        var name = trim(str.substr(first+1 +second + 1));
      // console.log( "'"+name +"'");
        return name;
    }
    function getPerc(str) {
        var first = str.indexOf('</') + 4;
        var perc = parseInt(trim(str.substr(0, first)).replace("<div class=\"lab\"><b style=\"color:red\">","").replace("<div class=\"lab\"><b style=\"color:brown\">","").replace("<div class=\"lab\"><b style=\"color:green\">","").replace("%</b>","").replace(".",""),10);
      // console.log( "'"+ perc +"'");

        return perc;
    }
    
    /*
   $('div.lab').each(function(){
	var str = $(this).html();
       
	var first = str.indexOf('</') + 4;
    var perc = trim(str.substr(0, first));
       console.log( "'"+ perc +"'");
       
	var second = str.substr(first+1).indexOf('</') + 4;
    var lvl = trim(str.substr(first+1, second));
       console.log("'"+ lvl+"'" );
       
    var name = "<span>"+trim(str.substr(first+1 +second + 1))+"</span>";
       console.log( "'"+name +"'");
	 $(this).html( name +" "+ lvl +" "+ perc);
   });*/
    
    function compareEq(left, right){
        if(getName(left) == getName(right)) return true;
        if(getLvl(left) == getLvl(right)) return true;
        if(getPerc(left) == getPerc(right)) return true;
        return false;
    }
    function compareGreater(left, right){
        if(getName(left) > getName(right)) return true;
        if(getLvl(left) > getLvl(right)) return true;
        if(getPerc(left) > getPerc(right)) return true;
        return false;
    }
    function sort_table(tbody, col, asc){
        var rows = tbody.rows;
        var rlen = rows.length;
        var arr = [];
        var i, j, cells;
        // fill the array with values from the table
        for(i = 0; i < rlen; i++){
            cells = rows[i].cells;
            arr.push([rows[i], cells[col].innerHTML]);
        }
        // sort the array by the specified column number (col) and order (asc)
        arr.sort(function(a, b){
            return (compareEq(a[1], b[1])) ? 0 : ((compareGreater(a[1], b[1])) ? asc : -1*asc);
        });
        for(i = 0; i < rlen; i++){
            tbody.appendChild(arr[i][0]);
        }
    }
    // Список с ячейками, содержащими названия подразделений
    var td_specs = $('td.spec');
    //alert(td_specs[0].innerHTML);
    // alert(td_spec.parentNode.parentNode.innerHTML);
    sort_table(td_specs[0].parentNode.parentNode, 5, 1);
}

if(window.top == window) {
    var script = document.createElement("script");
    script.textContent = '(' + run.toString() + ')();';
    document.documentElement.appendChild(script);
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址