Esfera

Eina per omplit les notes de l'Esfera com a tutor.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         Esfera
// @namespace    Esfera-CarlesV
// @homepageURL  https://greasyfork.org/en/scripts/436689-esfera
// @version      0.3.2
// @description  Eina per omplit les notes de l'Esfera com a tutor.
// @author       CarlesV
// @match        https://bfgh.aplicacions.ensenyament.gencat.cat/bfgh/avaluacio/*AvaluacioGrupAlumne/*
// @require      http://code.jquery.com/jquery-latest.js
// @icon         https://www.google.com/s2/favicons?domain=gencat.cat
// @grant        none
// ==/UserScript==

function trimChar(string, charToRemove) {
    while(string.charAt(0)==charToRemove) {
        string = string.substring(1);
    }
    while(string.charAt(string.length-1)==charToRemove) {
        string = string.substring(0,string.length-1);
    }
    return string;
}

var index=0;

function fer_notes()
{
    var text_notes = $('#notes').val();

    text_notes = text_notes.replaceAll('""',"'");

    const regex = /(.*)\t(.*)\t(("[^"]*")|(.*))/gm;

    //let m;
    //var pos=0;
    //var res=new Array();

    var matches = text_notes.match(regex);
    if (matches == null || matches.length==0)
    {
        const regex2 = /(.*)\t(.*)/gm;
        matches = text_notes.match(regex2);
    }

    if ($('#coemntaris').is(":checked"))
    {
        var x=index;
        {
            var lin=matches[x].split("\t");
            console.log(index + " " + lin[0] + " " + lin[1]);

            if (lin[0]=="TUTO")
            {
                var event_c = new Event('click');
                $(".accions a.btn")[0].dispatchEvent(event_c);

                var com = trimChar(lin[2],'"');

                $("textarea.form-control").val(com);
                var event = new Event('change');
                $("textarea.form-control")[0].dispatchEvent(event);
                //$("textarea.ng-pristine").parent().parent().find("a")[1].click();
            }
            else
            {
                //$("div.ng-binding:contains('" + lin[0] + "')").parent().find(".form-control.ng-pristine").val("string:"+lin[1]);
                var select = $("td.ng-binding:contains('" + lin[0] + "')").parent().find(".form-control.ng-pristine");
                select.val("string:"+lin[1]);
                event = new Event('change');
                select[ 0 ].dispatchEvent(event);

                event_c = new Event('click');
                //$("div.ng-binding:contains('" + lin[0] + "')").parent().find("a")[1].click();
                $("td.ng-binding:contains('" + lin[0] + "')").parent().find("a")[0].dispatchEvent(event_c);

                com = trimChar(lin[2],'"');

                //$("textarea.form-control").val(com);
                $("textarea.form-control")[1].value=com;
                $("textarea.form-control")[1].dispatchEvent(event);
                //$("textarea.ng-pristine").parent().parent().find("a")[1].click();
            }
        }
        index++;
    }
    else
    {
        for (var i=0;i<matches.length;i++)
        {
            lin=matches[i].split("\t");
            if (lin.length==0)
            {
               continue;
            }
            console.log(index + " " + lin[0] + " " + lin[1]);

            select = $("div.ng-binding:contains('" + lin[0] + "')").parent().find(".form-control.ng-pristine");
            select.val("string:"+lin[1]);
            event = new Event('change');
            select[ 0 ].dispatchEvent(event);
            //select.change();
            //select.fireEvent("onchange");

            /* Comentari
            $("div.ng-binding:contains('" + lin[0] + "')").parent().find("a")[1].click();

            var com = trimChar(lin[2],'"');

            $("textarea.ng-pristine").val(com);
            */
            //$("textarea.ng-pristine").parent().parent().find("a")[1].click();
        }
    }
}

(function() {
    'use strict';

    // Your code here...
    setTimeout(
        function()
        {
            $(window).on('hashchange', function(e){
                if (window.location.href.search("arcialAvaluacioGrupAlumneEntradaDades")==-1 && window.location.href.search("inalAvaluacioGrupAlumneEntradaDades")==-1)
                    $("#carles").hide();
                else
                    $("#carles").show();
                $("#notes").val("");
                index=0;
            });

            $(document).on('click', '#fer_notes', function() {
                fer_notes();
            });
            $(document).keypress(function(e){
                /*
                if (e.which == 13 && e.shiftKey){
                    e.stopImmediatePropagation();
                    e.preventDefault();
                    fer_notes();
                    return false;
                }
                */
                if (e.which == 13 && e.shiftKey){
                   if ($("div.modal-dialog a.btn:contains('Desa')").is(":visible"))
                   {
                       //e.stopImmediatePropagation();
                       //e.preventDefault();
                       var event_c = new Event('click');
                       $("div.modal-dialog a.btn:contains('Desa')")[1].click();
                       //return false;
                   }
                   else
                   {
                       e.stopImmediatePropagation();
                       e.preventDefault();
                       fer_notes();
                       return false;
                   }
                }
            });
            $(".col-sm-12.main-view.ng-scope").before(`
<div class='row' id='carles'>
  <div class='col-sm-6'>
    <textarea style='width:100%;' spellcheck='false' rows='10' id='notes'></textarea>
  </div>
  <div class='col-sm-6'>
  Esfera Tutors 0.2 - Carles [email protected]
  <BR>Instruccions:
  <ul>
  <li>Copia del google shhets les 2/3 columnes: Codi materia, Nota, <i>comentari (opcional)<i>.
  <li>Pega al quadre del costat.
  <li>Apreta el boto fer, revisa comentari i desa.
  <li>Torna a apreta el boto fer (fins acabar tots els àmbils).
  </ul>
  <input type="checkbox" id="coemntaris" name="coemntaris" value="si"> Comentaris
  <BR>
  <button id='fer_notes'>Fer</button>
  </div>
</div>`);
                if (window.location.href.search("arcialAvaluacioGrupAlumneEntradaDades")==-1 && window.location.href.search("inalAvaluacioGrupAlumneEntradaDades")==-1)
                    $("#carles").hide();
                else
                    $("#carles").show();
        }, 5000);
})();