Visvaris robots

ok

当前为 2025-06-02 提交的版本,查看 最新版本

// ==UserScript==
// @name         Visvaris robots
// @namespace    http://tampermonkey.net/
// @version      2025-05-36
// @description  ok
// @author       You
// @match        https://visvaris.lv/kindergarten/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=visvaris.lv
// @grant        GM_getValue
// @grant        GM_setValue
// ==/UserScript==

main();

var observeDOM = (function() {
  var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;

  return function(obj, callback) {
    if (!obj || obj.nodeType !== 1) {
      return;
    }

    if (MutationObserver) {
      // define a new observer
      var mutationObserver = new MutationObserver(callback);

      // have the observer observe for changes in children
      mutationObserver.observe(obj, {childList: true, subtree: true});
      return mutationObserver;
    } else if (window.addEventListener) { // browser support fallback
      obj.addEventListener('DOMNodeInserted', callback, false);
      obj.addEventListener('DOMNodeRemoved', callback, false);
    }
  }
})();



var DateDiff = {
    inDays: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();

        return Math.floor((t2-t1)/(24*3600*1000));
    },
    inWeeks: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();

        return parseInt((t2-t1)/(24*3600*1000*7));
    },
    inMonths: function(d1, d2) {
        var d1Y = d1.getFullYear();
        var d2Y = d2.getFullYear();
        var d1M = d1.getMonth();
        var d2M = d2.getMonth();

        return (d2M+12*d2Y)-(d1M+12*d1Y);
    },
    inYears: function(d1, d2) {
        return d2.getFullYear()-d1.getFullYear();
    }
}

//ja lapa ielādējas un skripts ir procesā
if(window.name == "processing")
{
    var dati = JSON.parse(GM_getValue('skripta_dati', '[]'));
    if(dati.search_step==1)search_step_1(dati)
    else if (dati.search_step==2)search_step_2(dati);
    else if (dati.search_step==3)search_step_3(dati);
    else if (dati.search_step==4)search_step_4(dati);
}

function main()
{
    var mt = document.getElementById("content");
    if(!mt) return;
    //title
    var title = document.createElement("h3");
    title.innerHTML='Visvaris robots';
    mt.appendChild(title);
    //textarea
    var input = document.createElement("textarea");
    input.id="demo_input_area";
    input.setAttribute('rows', 5);
    //pieliekam meklēšanas ievadlauku
    //let sp2 = document.getElementById("footer");
    mt.appendChild(input);
    //space
    var br = document.createElement("br");
    mt.appendChild(br);
    //poga
    var btn = document.createElement('button');
    btn.innerText="Meklēt";
    btn.type = "button";
    btn.addEventListener("click", function(){
        var input_lines=input.value;
        input_lines=input_lines.replace(/[ ]+/g, '');
        input_lines = input_lines.replace(/\r\n/g,"\n").split("\n");
        input_lines = input_lines.filter(elm => elm);//remove empty
        var dati = {
            current_line: 0,
            search_step: 1,
            lines:input_lines,
            results:[]
        };
        //atzīmējam šo tabu kā procesējošu
        window.name = "processing";
        search_step_1(dati);
    });
    //pievienojam meklēšanas pogu
    mt.appendChild(btn);
}

//atveram meklēšanas lapu
function search_step_1(dati)
{
    //atzīmējam, ka pēc pārlādēšanas būs 2. solis
    dati.search_step=2;
    //saglabājam datus GM lai tie ir pieejami arī pēc lapas pārlādēšanas
    GM_setValue('skripta_dati', JSON.stringify(dati));
    //ejam uz meklēšanas lapu
    document.location.href = 'https://visvaris.lv/kindergarten/PersonList';
}

//veicam aizpildam meklēšanas laukus un nospiežam pogu meklēt
function search_step_2(dati)
{
    //ievadam meklējamo tekstu
    var search_input = document.getElementById("PersistedModel_Code");
    var pk = dati.current_line;
        search_input.value=dati.lines[pk];
        //atzīmējam, ka pēc pārlādēšanas būs 3. solis
        dati.search_step=3;
        //saglabājam datus GM lai tie ir pieejami arī pēc lapas pārlādēšanas
        GM_setValue('skripta_dati', JSON.stringify(dati));
        //nospiežam pogu
        observeDOM(document.getElementById("PERSON_LIST_GRIDVIEW"), wait_1 );
        document.getElementById("search").click();
}

function wait_1(m)
{
   var addedNodes = [];
   //m.forEach(record => record.addedNodes.length & addedNodes.push(...record.addedNodes));
   //console.clear();
   //console.log('Added:', addedNodes);
    m.forEach((element) =>
    {
        //console.log(element);
        element.addedNodes.forEach((element2)=>{
            //console.log(element2.id);
            if(element2.id=='PERSON_LIST_GRIDVIEW_CallbackState')search_step_3();
        }
        );
    });

}

//atrastajā sarakstā atvērsim pirmo atrasto ierakstu
function search_step_3()
{
    var dati = JSON.parse(GM_getValue('skripta_dati', '[]'));
    var el1 = document.getElementById("PERSON_LIST_GRIDVIEW_DXMainTable");
    var el2=el1.getElementsByClassName("link")[0];
    //var el3 = el2.getElementsByTagName("a")[0];
    //atzīmējam, ka pēc pārlādēšanas būs 3. solis
    dati.search_step=4;
    //saglabājam datus GM lai tie ir pieejami arī pēc lapas pārlādēšanas
    GM_setValue('skripta_dati', JSON.stringify(dati));
    //ejam uz produkta lapu
    document.location.href = el2.href;
}

//personas lapā atradīsim datus
function search_step_4(dati)
{
    var rez={};
    rez.mates_adrese='';
    rez.teva_adrese='';
    rez.pieteikuma_statuss='';
    rez.derigs_ppii='';
    rez.derigs_bups='';
    var pieteikuma_statuss_atbilst=false;
    var lidzfinansejuma_pieteikuma_statuss_atbilst=false;
    var deklarets_jelgava=false;
    var tevs_deklarets_jelgava=false;
    var mate_deklareta_jelgava=false;
    rez.lidzfinansejuma_pieteikuma_statuss='';
    var el;
    //pk
    el = document.getElementById("content");
    el=el.getElementsByClassName("formtable")[0];
    el=el.getElementsByTagName("tr")[0];
    el=el.getElementsByTagName("td")[1];
    el = el.innerHTML;
    el = el.replace(/^\s+|\s+$/gm,'');//aizvācam liekās atstarpes
    rez.pk=el;
    //adrese
    el = document.getElementById("content");
    el=el.getElementsByClassName("formtable")[0];
    el=el.getElementsByTagName("tr")[3];
    el=el.getElementsByTagName("td")[1];
    el = el.innerHTML;
    rez.adrese=el;
    if(el.indexOf("Jelgava,")>0)deklarets_jelgava=true;
    //dzimšanas datums
    el = document.getElementById("content");
    el=el.getElementsByClassName("formtable")[0];
    el=el.getElementsByTagName("tr")[4];
    el=el.getElementsByTagName("td")[1];
    el = el.innerHTML;
    rez.dz_datums=el;
    //vecums
    var datums=el.substring(6, 10)+'-'+el.substring(3, 5)+'-'+el.substring(0, 2) ;
    var d1 = new Date(datums);
    var d2 = new Date();
    var menesi = DateDiff.inMonths(d1, d2);
    if(menesi>=18)rez.vecums = 'Jā '+menesi+' m.'
    else rez.vecums = 'Nē '+menesi+' m.';

    //vecāku dati
    el = document.getElementById("tab-connectedpersons");
    el = el.getElementsByTagName("tr");
    for (let persona of el)
    {
        var el2=persona.getElementsByTagName("td");
        if(el2[3])//izlaižam heder rindu
        {
            if(el2[3].innerHTML=='Tēvs')
            {
                rez.teva_adrese=el2[4].innerHTML;
                if(el2[4].innerHTML.indexOf("Jelgava,")>0)tevs_deklarets_jelgava=true;
            }
            if(el2[3].innerHTML=='Māte')
            {
                rez.mates_adrese=el2[4].innerHTML;
                if(el2[4].innerHTML.indexOf("Jelgava,")>0)mate_deklareta_jelgava=true;
            }
        }
    }
    //pieteikumi
    el = document.getElementById("tab-applications");
    el=el.getElementsByTagName("tr");
    for (let pieteikums of el)
    {
        el2=pieteikums.getElementsByTagName("td");
        if(el2[4])//izlaižam heder rindu
        {
            if(rez.pieteikuma_statuss!='')rez.pieteikuma_statuss+=', ';
            rez.pieteikuma_statuss+=el2[4].innerHTML;
            if(el2[4].innerHTML=='Jauns')pieteikuma_statuss_atbilst=true;
        }
    }
    //līdzfinansējuma pieteikumi
    el = document.getElementById("tab-cofinancing");
    el=el.getElementsByTagName("tr");
    for (let pieteikums of el)
    {
        el2=pieteikums.getElementsByTagName("td");
        if(el2[3])//izlaižam heder rindu
        {
            if(rez.lidzfinansejuma_pieteikuma_statuss!='')rez.lidzfinansejuma_pieteikuma_statuss+=', ';
            rez.lidzfinansejuma_pieteikuma_statuss+=el2[3].innerHTML;
            if(el2[3].innerHTML=='Līgums ir parakstīts un līdzfinansējums ir piešķirts' || el2[3].innerHTML=='Iesniegums saskaņots un līgums sagatavots')
            {
                lidzfinansejuma_pieteikuma_statuss_atbilst=true;
            }
        }
    }
    if(deklarets_jelgava && (tevs_deklarets_jelgava || mate_deklareta_jelgava) && menesi>=18 && lidzfinansejuma_pieteikuma_statuss_atbilst)
    {
        rez.derigs_ppii='Jā';
    }
    if(deklarets_jelgava && (tevs_deklarets_jelgava || mate_deklareta_jelgava) && menesi>=18 && pieteikuma_statuss_atbilst && !lidzfinansejuma_pieteikuma_statuss_atbilst)
    {
        rez.derigs_bups='Jā';
    }

    //saglabāsim  rezultātos
    dati.results[dati.current_line]=rez;
    //console.log(dati);
    if(dati.current_line+1 < dati.lines.length)
    {
        //nākošais meklējamais vārds
        dati.current_line++;
        search_step_1(dati);
    }else
    {
        //console.log(dati.results);
        //var textarea = document.getElementById("demo_input_area");
        //textarea.value = dati.results.join("\n");
        //beidzam processingu
        var table = document.createElement('table');
        table.setAttribute('border', 1);
        table.setAttribute('style','border-collapse: collapse;');
        var tr = document.createElement('tr');
        var td1 = document.createElement('td');
        var td2 = document.createElement('td');
        var td3 = document.createElement('td');
        var td4 = document.createElement('td');
        var td5 = document.createElement('td');
        var td6 = document.createElement('td');
        var td7 = document.createElement('td');
        var td8 = document.createElement('td');
        var td9 = document.createElement('td');
        var td10 = document.createElement('td');
        var text1 = document.createTextNode('pk');
        var text2 = document.createTextNode('dz.dat.');
        var text3 = document.createTextNode('adrese');
        var text4 = document.createTextNode('tēva adrese');
        var text5 = document.createTextNode('mātes adrese');
        var text6 = document.createTextNode('pieteikuma statuss rindā');
        var text7 = document.createTextNode('līdzfinansējuma pieteikuma (līguma) statuss');
        var text8 = document.createTextNode('vecāks par 1,5 gadiem');
        var text9 = document.createTextNode('der/neder pPII');
        var text10 = document.createTextNode('BUPS');
        td1.appendChild(text1);
        td2.appendChild(text2);
        td3.appendChild(text3);
        td4.appendChild(text4);
        td5.appendChild(text5);
        td6.appendChild(text6);
        td7.appendChild(text7);
        td8.appendChild(text8);
        td9.appendChild(text9);
        td10.appendChild(text10);
        tr.appendChild(td1);
        tr.appendChild(td2);
        tr.appendChild(td3);
        tr.appendChild(td4);
        tr.appendChild(td5);
        tr.appendChild(td6);
        tr.appendChild(td7);
        tr.appendChild(td8);
        tr.appendChild(td9);
        tr.appendChild(td10);
        table.appendChild(tr);

        dati.results.forEach((element)=>{
            var tr = document.createElement('tr');
            var td1 = document.createElement('td');
            var td2 = document.createElement('td');
            var td3 = document.createElement('td');
            var td4 = document.createElement('td');
            var td5 = document.createElement('td');
            var td6 = document.createElement('td');
            var td7 = document.createElement('td');
            var td8 = document.createElement('td');
            var td9 = document.createElement('td');
            var td10 = document.createElement('td');

            var text1 = document.createTextNode(element.pk);
            var text2 = document.createTextNode(element.dz_datums);
            var text3 = document.createTextNode(element.adrese);
            var text4 = document.createTextNode(element.teva_adrese);
            var text5 = document.createTextNode(element.mates_adrese);
            var text6 = document.createTextNode(element.pieteikuma_statuss);
            var text7 = document.createTextNode(element.lidzfinansejuma_pieteikuma_statuss);
            var text8 = document.createTextNode(element.vecums);
            var text9 = document.createTextNode(element.derigs_ppii);
            var text10 = document.createTextNode(element.derigs_bups);

            td1.appendChild(text1);
            td2.appendChild(text2);
            td3.appendChild(text3);
            td4.appendChild(text4);
            td5.appendChild(text5);
            td6.appendChild(text6);
            td7.appendChild(text7);
            td8.appendChild(text8);
            td9.appendChild(text9);
            td10.appendChild(text10);
            tr.appendChild(td1);
            tr.appendChild(td2);
            tr.appendChild(td3);
            tr.appendChild(td4);
            tr.appendChild(td5);
            tr.appendChild(td6);
            tr.appendChild(td7);
            tr.appendChild(td8);
            tr.appendChild(td9);
            tr.appendChild(td10);

            table.appendChild(tr);
        })
        var mt = document.getElementById("content");
        var br = document.createElement("br");
        mt.appendChild(br);
        br = document.createElement("br");
        mt.appendChild(br);
        mt.appendChild(table);
        window.name = "ok";
    }
}