RoutePrt

route the route

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         RoutePrt
// @namespace    https://www.conanluo.com/
// @version      1.2.12
// @description  route the route
// @author       Conan
// @match        https://*.itinerisonline.com/*
// @require      https://code.jquery.com/jquery-2.2.4.min.js
// @ require      https://work.conanluo.com/prts_info.js
// @icon         https://www.google.com/s2/favicons?sz=64&domain=itinerisonline.com
// @grant        none
// ==/UserScript==

(function() {

    'use strict';  
    //let addrs={"4145 Lincoln Way":"9","6102 California Street":"1","2525 Balboa Street":"1","955 Broderick Street":"8","275 10th Street":"4","2315 25th Avenue":"10","2442 33rd Avenue":"10","2535 35th Avenue":"9","201 Charter Oak Avenue":"5","72 Broad Street":"2","246 McAllister Street":"4","1609 Cayuga Avenue":"2","205 Clayton Street":"8","838 Pacific Avenue":"3","3627 Moraga Street":"9","1025 Fillmore Street":"8","471 19th Avenue":"1","1770 19th Avenue":"10","1099 Fillmore Street":"8","533 29th Avenue":"1","345 6th Street":"4","875 34th Avenue":"1","1001 Franklin Street":"8","2567 22nd Avenue":"10","574 21st Avenue":"1","629 Larch Way":"8","1419 48th Avenue":"9","670 Eddy Street":"4","1643 42nd Avenue":"9","1250 Haight Street":"8","1671 44th Avenue":"9","53 Colton Street":"11","1665 Chestnut Street":"3","2447 19th Avenue":'10',"735 Ellis Street":"4","1624 Noriega Street":"10","1900 29th Avenue":"10","2770 Lombard Street":"3","624 9th Avenue":"1","2535 38th Avenue":"9","1667 Silver Avenue":"5","705 Frederick Street":"11","468 3rd Avenue":"1","2220 Turk Boulevard":"2","1880 Fulton Street":"8","5767 Mission Street":"2","345 Arguello Boulevard":"1","750 5th Avenue":"1","171 Farallones Street":"2","345 6th Street 307":"4","358 21st Avenue 2":"1","1790 9th Avenue":"10","1066 Mission Street":"4","1100 Van Ness Avenue":"4","118 Taylor Street":"4","1201 Golden Gate Avenue":"8","1215 Ellis Street":"4","1223 Webster Street":"8","1234 McAllister Street":"8","1240 Fillmore Street":"8","1250 Pierce Street":"8","1285 Monteray Blvd":"2","1285 Monterey Boulevard":"2","129 Girard Street":"6","1301 Stevenson Boulevard":"0","1310 15th Avenue":"10","1316 Stockton Street":"3","1321 Mission Street":"4","1333 Bush Street":"4","135 Capp Street":"5","14 Roemer Way":"11","1420 Hampshire Street":"5","1423 32nd Avenue":"10","1426 Rivera Street":"10","1444 McAllister Street":"8","1458 21st Avenue":"10","1499 Webster St":"8","1510 Jerrold Avenue":"5","1542 36th Avenue":"9","1551 Hyde Street":"3","1559 27th Avenue":"10","159 Bright Street":"2","159 Sagamore Street":"2","1634 41st Avenue":"9","1635 23rd Avenue":"10","1645 Pacific Avenue":"3","165 Amherst Street":"6","1660 Geary Boulevard":"0","1667 Silver Avenue":"5","1675 Scott Street":"0","1680 Eddy Street":"8","1683 44th Avenue":"9","1722 Turk Street":"8","1723 Geneva Avenue":"6","1731 45th Avenue":"9","1735 Steiner Street":"8","174 Ellis Street":"4","1755 O'Farrell Street":"8","1797 Ellis Street":"8","1814 32nd Avenue":"10","1870 36th Avenue":"9","1880 Pine Street":"3","191 Evelyn Way":"2","1927 32nd Avenue":"10","1937 20th Avenue":"10","1975 45th Avenue":"9","2 Watt Avenue":"2","2014 34th Avenue":"9","2034 34th Avenue":"9","2034 43rd Avenue":"9","2051 46th Avenue":"9","2063 18th Avenue":"10","2107 O'Farrell Street":"0","211 Sweeny Street":"6","2116 17th Avenue":"10","2141 Geary Boulevard APT 101":"8","2143 21st Avenue":"10","216 Eddy Street":"4","2179 30th Avenue":"10","2187 30th Avenue":"10","2191 45th Avenue":"9","225 30th Street":"1","2279 25th Avenue":"10","23 Glenview Drive":"2","2318 43rd Avenue":"9","2330 Post Street 6th Floor":"8","2340 Turk Boulevard":"2","2351 20th Avenue":"10","2456 Geary Boulevard":"8","2459 28th Avenue":"10","25 Buckingham Way":"2","2517 Post Street":"8","2560 21st Avenue":"10","259 Broad Street":"2","2595 43rd Avenue":"9","2611 34th Avenue":"9","2698 California Street Apt C":"8","27 Hollywood Court":"2","2709 Balboa Street":"1","2740 California Street":"8","2770 Lombard Street":"3","302 Silver Avenue":"6","31 Arleta Avenue":"6","320 Clementina Street":"4","330 Cordova Street":"2","350 Ellis Street":"4","350 Gaven Street":"6","350 University Street":"6","350 University Street":"6","355 Faxon Avenue":"2","3575 Geary Boulevard":"0","358 21st Avenue":"1","3595 Geary Boulevard":"0","3595 Geary Boulevard":"0","364 4th Avenue":"1","365 Fulton Street":"8","367 Hale Street":"6","3683 Peralta Boulevard":"5","370 Valencia Street":"5","3981 Alemany Boulevard APT 214":"2","410 China Basin Street":"3","4116 Ulloa Street":"9","420 Berry Street":"4","4220 Judah Street":"9","425 Eddy Street":"4","426 Burrows Street":"6","465 11th Avenue":"1","468 Amherst Street":"6","468 Amherst Street":"6","4735 California Street":"1","4735 California Street 2":"1","4830 Mission Street":"2","491 31st Avenue":"1","500 33rd Avenue":"1","506 41st Avenue":"11","520 Jones Street":"4","528 Valencia Street":"5","528 Valencia Street 403":"5","5328 Fulton Street":"1","533 29th Avenue ":"1","537 Kansas Street":"5","562 6th Avenue":"1","5628 California Street":"1","5717 Geary Boulevard":"1","580 Capp Street":"5","614 7th Avenue":"1","622 Geneva Avenue":"6","627 21st Avenue":"1","640 Turk Street":"4","663 38th Avenue":"1","688 27th Street":"0","701 Golden Gate Avenue":"4","706 Columbus Avenue":"3","711 Pacific Avenue":"3","730 Eddy Street":"4","737 Folsom Street":"4","76 Newton Street":"2","770 18th Avenue":"1","779 15th Avenue":"1","801 Howard Street":"4","801 Howard Street":"4","848 Kearny Street":"3","858 Washington Street":"3","890 29th Avenue":"1","945 Sacramento Street":"3","990 Polk Street":"4","995 Brussels Street":"6"}

    let colors=["000000","b51548","188225","f3f600","AAAA00","443ea1","b1f9d1","aa77aa","01b4fa","f685e6","e08536","dddddd"]

    let address=[];
    $("body").prepend(`<button id="ch" class='btn btn-success'>Hight Light Route</button>
    <button id="popPmRoute" class='btn btn-danger'>pop Pm Route</button>`)

    async function delay(time){
        return new Promise((res,rej)=>{
            setTimeout(_=>res(),time)
        })
    }

    $("#ch").click(function(){
        (async () => {
            let da=document.getElementsByClassName("table table-condensed table-hover selectable")[0].getElementsByTagName("tr");

            for(let i=0;i<da.length;i++){
                if(!((da[i].innerText+"").indexOf("3575 Geary ")>-1)){
                    let splitWord="\t";
                    if((da[i].innerText+"").indexOf("\tPU")>-1)
                        splitWord+="PU ";
                    else if((da[i].innerText+"").indexOf("\tDO")>-1)
                        splitWord+="DO ";
                    else continue;
                    

                    da[i].click();
                    let name=da[i].innerText.split(splitWord)[1].split("\t")[0];
                    await delay(100);
                    let prt=document.getElementsByClassName("da selected")[0]
                    prt.innerText=name
                    changeBg(da[i],prt,1)
                        
                }

            }

            //show color
            let colorHtml="<div class='panel-primary'><h3 class='panel-heading'>The Color For The Route</h3>"
            for(let i=0;i<colors.length;i++){
                let x=i;
                if(x==11 || x==0) x="Check Which Route"
                else x="Route "+x
                colorHtml+=`<span style="padding:5px 30px; background-color:#${colors[i]};${i==5||i==0?"color:white;":""}">${x}</span>&nbsp;&nbsp;`
            }
            $("#show_route_color").html(colorHtml+'</div>')

            // $("#ch").text(address.join("@"))
        })();
    })
    
    $("#popPmRoute").click(function(){
        const PICK_UP_TIME="15:30";
        const EARLY_PICK_UP_TIME_2="14:00";
        const EARLY_PICK_UP_TIME_3="15:00";
        (async () => {
            let pmArr=[];//index number is route number, 11 => joe & 12=> wilson 
            //console.log($("#schedule-area").html())

            let schedule=document.getElementById("schedule-area").getElementsByClassName("vehicle-group");
            for(let i=0; i<schedule.length; i++){
                if(schedule[i].id=="@"){
                    continue;
                }

                let tempArr=[];
                let route="";

                schedule[i].click()

                route=$(schedule[i]).find("font").eq(0).text().replace("Route ","")
                
                if(route=="Mini Van" || route=="MV"){
                    route=$(schedule[i]).find("font").eq(1).text().trim()
                    route=route=="Joe"?0:13
                }

                //console.log(route)
                let checkList=document.getElementById("checkpoint-list").getElementsByTagName("tr")

                for(let j=0;j<checkList.length;j++){

                    if($(checkList[j].getElementsByTagName("td")[0]).find("a").text().trim()===PICK_UP_TIME){
                        let tempPrt=$(checkList[j].getElementsByTagName("td")[4]).text().replace(" PU ","").trim()
                        tempArr.push(tempPrt)
                        
                    }else if($(checkList[j].getElementsByTagName("td")[0]).find("a").text().trim()===EARLY_PICK_UP_TIME_2){
                        let tempPrt=$(checkList[j].getElementsByTagName("td")[4]).text().replace(" PU ","").trim()+" - @2pm"
                        tempArr.push(tempPrt)
                    }else if($(checkList[j].getElementsByTagName("td")[0]).find("a").text().trim()===EARLY_PICK_UP_TIME_3){
                        let tempPrt=$(checkList[j].getElementsByTagName("td")[4]).text().replace(" PU ","").trim()+" - @3pm"
                        tempArr.push(tempPrt)
                    }

                    // console.log($(checkList[j].getElementsByTagName("td")[6]).text().trim()===CENTER_ADDRESS)
                }
                pmArr[parseInt(route)]=tempArr.sort()


                await delay(10)
                //1break;
                //console.log(schedule[i].id)
            }
            //console.log(pmArr[1])

            //test file
            //let url="https://conanluo.com/ioa/popPmRoute.html?"

            let url="https://work.conanluo.com/popPmRoute.html?"
            let param="["

            for(let i=0;i<pmArr.length;i++){
                let tempArr;
                console.log(i+"---"+pmArr[i])
                if(pmArr[i]===undefined){
                    param+="undefined,"
                }else{
                    tempArr=pmArr[i]
                    param+="["
                    for(let j=0;j<tempArr.length;j++){
                        param+=`"${tempArr[j]}"`
                        if((j+1)!=tempArr.length) param+=","
                    }
                    param+="],"
                }
            }

            param+="undefined]"

            window.open(url+"arr="+param)

            //finished then relocate
            //document.location.href="www.baidu.com"
        })();
    })

    function changeBg(da,prt,type){
//        let color=type==1?"red":"green";
        let slt=type==1?"\tPU ":"\tDO ";
//        let name=da.innerText.split(slt)[1].split("\t")[0];
        let addr=da.innerText.split("\t")[6];
        address.push(addr)
//console.log(addrs[addr.replace(", San Francisco","")]);
        let addrIndex=addr.replace(", San Francisco","");
/**/        
        try{
            addrIndex=addrIndex.split(" #")[0]
            //console.log(addrIndex)
        }catch(e){
            try {
                addrIndex=addrIndex.split(" Apt")[0];
            } catch (error) {
                
            }
        }
/**/                
        $(prt).css("background-color","#"+colors[addrs[addrIndex]])
        // $(prt).css("background-color","#999999")
    }
})();