Visvaris robots

ok

// ==UserScript==
// @name         Visvaris robots
// @namespace    http://tampermonkey.net/
// @version      3000.005
// @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);
    else if (dati.search_step==5)search_step_5(dati);
}

function main()
{
    var mt = document.getElementById("content");
    if(!mt) return;
    //title
    var myVersion = GM_info.script.version;
    var title = document.createElement("h3");
    title.innerHTML='Visvaris robots  v'+myVersion;
    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);
    //v space
    var br = document.createElement("br");
    mt.appendChild(br);
    //poga privātie PII
    var btn = document.createElement('input');
    btn.value="Pārbaudīt pPII";
    btn.className = "button";
    btn.type = "submit";
    btn.addEventListener("click", function(){
        var input_lines=input.value;
        input_lines=input_lines.replace(/[ ]+/g, '');//spaces
        input_lines=input_lines.replace(/\t/g, '');//tabs
        input_lines=input_lines.replace(/['"]+/g, '');//quotes
        input_lines = input_lines.replace(/\r\n/g,"\n").split("\n");//split lines to array
        input_lines = input_lines.filter(elm => elm);//remove empty lines
        var dati = {
            current_line: 0,
            search_step: 1,
            search_type: 1,
            lines:input_lines,
            results:[]
        };
        //atzīmējam šo tabu kā procesējošu
        window.name = "processing";
        search_step_1(dati);
    });
    mt.appendChild(btn);
    //h space
    var span = document.createElement("span");
    span.innerHTML=' ';
    mt.appendChild(span);
    //poga rinda BUPS
    var btn2 = document.createElement('input');
    btn2.value="Pārbaudīt rindu/BUPS";
    btn2.className = "button";
    btn2.type = "submit";
    btn2.addEventListener("click", function(){
        var input_lines=input.value;
        input_lines=input_lines.replace(/[ ]+/g, '');//spaces
        input_lines=input_lines.replace(/\t/g, '');//tabs
        input_lines=input_lines.replace(/['"]+/g, '');//quotes
        input_lines = input_lines.replace(/\r\n/g,"\n").split("\n");//split lines to array
        input_lines = input_lines.filter(elm => elm);//remove empty lines
        var dati = {
            current_line: 0,
            search_step: 1,
            search_type: 2,
            lines:input_lines,
            results:[]
        };
        //atzīmējam šo tabu kā procesējošu
        window.name = "processing";
        search_step_1(dati);
    });
    mt.appendChild(btn2);
    //h space
    span = document.createElement("span");
    span.innerHTML=' ';
    mt.appendChild(span);
    //poga kopet tabulu
    var btn3 = document.createElement('input');
    btn3.value="Nokopēt tabulu";
    btn3.className = "button";
    btn3.type = "submit";
    btn3.addEventListener("click", function(){
        copytable('robota_rezultati');
    });
    mt.appendChild(btn3);
    //v space
    br = document.createElement("br");
    mt.appendChild(br);

}

//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='';
    rez.opcija1='';
    rez.opcija2='';
    rez.opcija3='';
    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;
    var step_5_url='';
    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);
    var v2=menesi % 12;
    var v1=Math.floor(menesi/12);
    if(menesi>=18)rez.vecums = 'Jā '+v1+'g.'+v2+'m.';
    else rez.vecums = 'Nē '+v1+'g.'+v2+'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;
                step_5_url = el2[0].firstChild.href;
            }
        }
    }
    //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;
    if(dati.search_type==2 && pieteikuma_statuss_atbilst)
    {
        //atzīmējam, ka pēc pārlādēšanas būs 5. solis
        dati.search_step=5;
        //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 aktīvā rindas pieteikuma lapu
        document.location.href = step_5_url;
    }
    else
    {
        finish_row(dati,rez)
    }
}

function search_step_5(dati)
{
    //alert('step 5');
    var el = document.getElementById("SELECTED_INSTITUTION_LIST_GRIDVIEW_DXMainTable");
    el=el.getElementsByClassName("dxgvDataRow_MansWeb");
    var i=0;
    for (let prioritate of el)
    {
        i++;
        var el2=prioritate.getElementsByTagName("td");
        if(i==1)dati.results[dati.current_line].opcija1=el2[1].innerHTML;
        if(i==2)dati.results[dati.current_line].opcija2=el2[1].innerHTML;
        if(i==3)dati.results[dati.current_line].opcija3=el2[1].innerHTML;
        //alert(el2[1].innerHTML);
    }
    finish_row(dati);
}

function finish_row(dati)
{
    //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
    {
        if(dati.search_type==1)display_data_1(dati);//pPPI
        if(dati.search_type==2)display_data_2(dati);//rinda,BUPS
    }
}

function display_data_1(dati)//pPII
{
    //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('id', 'robota_rezultati');
    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";
}

function display_data_2(dati)//BUPS rinda
{
    //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('id', 'robota_rezultati');
    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 td11 = document.createElement('td');
    var td12 = 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('BUPS');
    var text10 = document.createTextNode('pr_1');
    var text11 = document.createTextNode('pr_2');
    var text12 = document.createTextNode('pr_3');
    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);
    td11.appendChild(text11);
    td12.appendChild(text12);
    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);
    tr.appendChild(td11);
    tr.appendChild(td12);
    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 td11 = document.createElement('td');
        var td12 = 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_bups);
        var text10 = document.createTextNode(element.opcija1);
        var text11 = document.createTextNode(element.opcija2);
        var text12 = document.createTextNode(element.opcija3);

        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);
        td11.appendChild(text11);
        td12.appendChild(text12);
        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);
        tr.appendChild(td11);
        tr.appendChild(td12);

        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";
}

function copytable(el) {
  var urlField = document.getElementById(el)
  var range = document.createRange()
  range.selectNode(urlField)
  window.getSelection().addRange(range)
  document.execCommand('copy')
}