Project Endor (Zoltar)

easy clicks for zoltars

当前为 2015-12-16 提交的版本,查看 最新版本

// ==UserScript==
// @name         Project Endor (Zoltar)
// @namespace    https://gf.qytechs.cn/en/users/12709
// @version      1.0.02
// @description  easy clicks  for zoltars
// @author       feihtality
// @match        https://www.google.com/evaluation/endor/*
// @grant        none
// ==/UserScript==
/*jshint esnext:true*/

if (/NOT a/.test(document.querySelector('h2').textContent) || /An error occurred/.test(document.querySelector('p').textContent)) {

    (function() {
        'use strict';

        var _p = document.querySelector('p');
        if (!/previewand/.test(document.referrer) && _p && /An error occurred/.test(_p.textContent)) document.location.reload();

        function make(tag) { return document.createElement(tag); }
        function get(val) { return document.querySelector('input[value="'+val+'"]'); }
        function get2(val) { return document.querySelector(`input[ng-true-value="'${val}'"]`); }

        var div = document.body.appendChild(make('DIV')),
            p1 = div.appendChild(make('P')), p2 = div.appendChild(make('P')), p3 = div.appendChild(make('P')),
            p4 = div.appendChild(make('P')), p5 = div.appendChild(make('p')), p6 = div.appendChild(make('P')),
            panel = {
                p1: {
                    node: p1, options: {radio: true},
                    provider : { controller: make('BUTTON'), target: get('DIRECT_PROVIDER') },
                    retailer : { controller: make('BUTTON'), target: get('RETAILER') },
                    referral : { controller: make('BUTTON'), target: get('REFERRAL_AGGREGATOR') },
                    search :   { controller: make('BUTTON'), target: get('SEARCH_ENGINE') },
                    market :   { controller: make('BUTTON'), target: get('MARKETPLACE') },
                    deals :    { controller: make('BUTTON'), target: get('DEALS_PROVIDER') },
                    content :  { controller: make('BUTTON'), target: get('CONTENT_PUBLISHER') },
                },
                p2: {
                    node: p2, options: {radio: true},
                    physnone :           { controller: make('BUTTON'), target: get('NONE') },
                    single :             { controller: make('BUTTON'), target: get('LOCAL_SINGLETON') },
                    singleRegionBranch : { controller: make('button'), target: get('SINGLE_REGION_BRANCHES') },
                    multiRegionBranch :  { controller: make('button'), target: get('MULTIPLE_REGION_BRANCHES') },
                },
                p3: {
                    node: p3, options: {radio: false},
                    virtual: { controller: make('button'), target: get2('VIRTUAL') },
                    custLoc: { controller: make('button'), target: get2('CUSTOMER_LOCATION') },
                    busiLoc: { controller: make('button'), target: get2('BUSINESS_LOCATION') },
                },
                p4: {
                    node: p4, options: {radio: true},
                    goods :    { controller: make('BUTTON'), target: get('GOODS') },
                    services : { controller: make('BUTTON'), target: get('SERVICES') },
                    both :     { controller: make('BUTTON'), target: get('BOTH') },
                },
                p5: {
                    node: p5, options: {radio: true},
                    direct :     { controller: make('BUTTON'), target: get('DIRECT') },
                    both   :     { controller: make('BUTTON'), target: document.querySelector('input[value=BOTH]:not([name=product_type])') },
                    indirect :   { controller: make('BUTTON'), target: get('INDIRECT') },
                },
                p6: {
                    node: p6, options: {radio: true},
                    SUBMIT : { controller: make('BUTTON'), target: document.querySelector('input[type=submit]') },
                }
            };
        div.style.cssText = "z-index:10; position:fixed; top:10%;right:50%; background:#eee; opacity:0.9; transform:translateX(50%);";
        div.className = 'zoltarpanel';

        var css = document.head.appendChild(document.createElement('STYLE'));
        css.innerHTML = '.zoltarpanel p {margin:5px}';

        function sel(group, item) { 
            item.controller.onclick = () => { 
                var prev = group.node.querySelector('[style]');
                if (prev && group.options.radio === true) prev.style.background = '';
                item.target.click();
                if (group.options.radio === false) item.controller.style.background = item.controller.style.background === 'lightgreen' ? '' : 'lightgreen';
                else item.controller.style.background = 'lightgreen';
                scroller(item.target);
            };
        }
        function scroller(loc, dt) {
            var getPos = function(el) { var offset = 0; while(el) { offset += el.offsetTop; el = el.offsetParent; } return offset; },
                target = getPos(loc),
                pos = window.scrollY,
                dpos = Math.ceil((target-pos)/3);
            dt = dt ? dt-1 : 25;
            if (target === pos || dpos === 0 || dt === 0) return;
            window.scrollBy(0,dpos);
            setTimeout( () => scroller(loc, dt), dt);
        }

        for (var j of Object.keys(panel)) {
            for (var k of Object.keys(panel[j])) {
                if (k === 'node' || k === 'options') continue;
                panel[j].node.appendChild(panel[j][k].controller);
                panel[j][k].controller.textContent = k;
                sel(panel[j], panel[j][k]);
            }
        }
    })();
}

QingJ © 2025

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