• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] CodeOptimierung - JS

lydiavamos

New member
Hallo zusammen,

ich habe vor einiger Zeit aus Zeitdruck ziemlich schnell einige Zeilen Code schreiben müssen.
Nun Frage ich mich, wie man das ganze nun optimieren kann. Es geht sicherlich schöner, einfacher und besser. Sicherlich kann man sich auch einige Schleifen sparen bzw. optimieren. Ist nur die große Frage des wie?!:

Code:
function kst_aenderung_sub() {
    if (document.getElementById("mandant").innerHTML == "xx" && jr_get_value('KST_AENDERUNG') == "" && jr_get_value('ZEIGER_BOX_xx') != "gemeinyy") {
        if (document.getElementById("mandant").innerHTML == "xx" && (jr_get_steplabel() == "Kaufmann" || jr_get_steplabel() == "Endfreigabe")) {
            jr_set_value('ZEIGER_KST', '1'); {
                var kostenstelle = jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostenstelle');
                jr_set_value("tmp_sub_kst", kostenstelle);
            }
            jr_sql_refresh("tmp_kst_sub", array_kst_sub);
        } else if (document.getElementById("mandant").innerHTML == "xx" && (jr_get_steplabel() == "Kaufmann" || jr_get_steplabel() == "Endfreigabe")) {
            jr_set_value("ZEIGER_KST", "0");
        }

        if (document.getElementById("mandant").innerHTML == "xx") {
            var $kst_sub = jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostenstelle');
            var $kst_res = $kst_sub.substr(8);

            if ($kst_res == "0000") {
                jr_show_subtable_column('Rechnunungserfassung_short', 'kostentraeger');
                jr_show_subtable_column('Rechnunungserfassung_short', 'kostentraegername');
                jr_set_required('Rechnunungserfassung_short_kostentraeger_0', 'true');
            } else {
                jr_hide_subtable_column('Rechnunungserfassung_short', 'kostentraegername');
                jr_hide_subtable_column('Rechnunungserfassung_short', 'kostentraeger');
            }
        } else if (jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostenstelle') == "") {
            jr_hide_subtable_column('Rechnunungserfassung_short', 'kostentraegername');
            jr_hide_subtable_column('Rechnunungserfassung_short', 'kostentraeger');
        } else {
            jr_hide_subtable_column('Rechnunungserfassung_short', 'kostentraegername');
            jr_hide_subtable_column('Rechnunungserfassung_short', 'kostentraeger');
        }

        if (jr_get_steplabel() == "Rechnungserfassung") {
            jr_set_value('ZEIGER_KST', '1'); {
                var kostenstelle_all = jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostenstelle');
                jr_set_value("tmp_sub_kst", kostenstelle_all);
            }
            jr_sql_refresh("tmp_kst_sub", array_kst_sub);
        }
    }
}

function ktr_aenderung_sub() {
    if (document.getElementById("mandant").innerHTML == "xx" && jr_get_value('KST_AENDERUNG') == "" && jr_get_value('ZEIGER_BOX_xx') != "gemeinyy") {
        if (document.getElementById("mandant").innerHTML == "xx" && (jr_get_steplabel() == "Rechnungserfassung" || jr_get_steplabel() == "Kaufmann" || jr_get_steplabel() == "Endfreigabe")) {
            jr_set_value('ZEIGER_KTR', '1'); {
                var kostentraeger = jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostentraeger');
                jr_set_value("tmp_sub_ktr", kostentraeger);
            }
            jr_sql_refresh("tmp_ktr_sub", array_ktr_sub);
        } else if (document.getElementById("mandant").innerHTML == "xx" && (jr_get_steplabel() == "Rechnungserfassung" || jr_get_steplabel() == "Kaufmann" || jr_get_steplabel() == "Endfreigabe")) {
            jr_set_value('ZEIGER_KTR', '0');
        }

        if (document.getElementById("mandant").innerHTML == "xx") {
            var $kst_sub = jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostenstelle');
            var $kst_res = $kst_sub.substr(8);

            if ($kst_res == "0000") {
                jr_show_subtable_column('Rechnunungserfassung_short', 'kostentraeger');
                jr_show_subtable_column('Rechnunungserfassung_short', 'kostentraegername');
                jr_set_required('Rechnunungserfassung_short_kostentraeger_0', 'true');
            } else {
                jr_hide_subtable_column('Rechnunungserfassung_short', 'kostentraegername');
                jr_hide_subtable_column('Rechnunungserfassung_short', 'kostentraeger');
            }
        } else {
            jr_hide_subtable_column('Rechnunungserfassung_short', 'kostentraegername');
            jr_hide_subtable_column('Rechnunungserfassung_short', 'kostentraeger');
        }
    }
}

function array_kst_sub() {
    var myString = jr_get_value("tmp_kst_sub");
    var myArray;

    if (document.getElementById("mandant").innerHTML == "xx" && (jr_get_steplabel() == "Kaufmann" || jr_get_steplabel() == "Endfreigabe")) {

        if (myString != "") {
            myArray = myString.split(";");
            jr_set_value("niederlassung", myArray[0]);
            jr_set_value("tmp_r4", myArray[1]);
            jr_set_value("tmp_r5", myArray[2]);
            jr_set_value("tmp_r7", myArray[3]);

            if (jr_get_steplabel() == "Endfreigabe") {
                jr_set_value("nll_auswahl", myArray[3]);
                jr_set_value("nll_pers", myArray[3]);
            }
        }

        if (jr_get_value("tmp_r5") == $JRUSER['userName'] && (jr_get_steplabel() == "Kaufmann")) {
            jr_set_value('ZEIGER_BENUTZER', '1');
        } else if (jr_get_value("tmp_r7") == $JRUSER['userName'] && (jr_get_steplabel() == "Endfreigabe")) {
            jr_set_value('ZEIGER_BENUTZER', '1');
        } else {
            jr_set_value('ZEIGER_BENUTZER', '0');
        }

        if (jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostentraeger') != "") {
            var $kst_sub = jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostenstelle');
            var $kst_res = $kst_sub.substr(8);

            if ($kst_res == "0000") {
                array_ktr_sub();
            }
        }

        jr_sql_refresh("tmp_rolle", array_rollen);
    }

    if (jr_get_steplabel() == "Rechnungserfassung") {
        if (myString != "") {
            myArray = myString.split(";");
            jr_set_value("niederlassung", myArray[0]);
        }
        jr_sql_refresh("tmp_rolle", array_rollen);
    }
}

function array_ktr_sub() {
    if (jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostenstelle') != "") {
        var $kst_sub_1 = jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostenstelle');
        var $kst_res_1 = $kst_sub_1.substr(8);

        if ($kst_res_1 == "0000" && (jr_get_steplabel() == "Kaufmann" || jr_get_steplabel() == "Endfreigabe")) {
            var myString_1 = jr_get_value("tmp_ktr_sub");
            var myArray_1;

            if (myString_1 != "") {
                myArray_1 = myString_1.split(";");
                jr_set_value("tmp_r4", myArray_1[0]);
                jr_set_value("tmp_r7", myArray_1[1]);
                jr_set_value("tmp_r5", myArray_1[2]);

                if (jr_get_steplabel() == "Endfreigabe") {
                    jr_set_value("nll_auswahl", myArray_1[1]);
                    jr_set_value("nll_pers", myArray_1[1]);
                }
            }

            if (jr_get_value("tmp_r5") == $JRUSER['userName'] && (jr_get_steplabel() == "Kaufmann")) {
                jr_set_value('ZEIGER_BENUTZER', '1');
            } else if (jr_get_value("tmp_r7") == $JRUSER['userName'] && jr_get_steplabel() == "Endfreigabe") {
                jr_set_value('ZEIGER_BENUTZER', '1');
            } else {
                jr_set_value('ZEIGER_BENUTZER', '0');
            }

            jr_sql_refresh("tmp_rolle", array_rollen);
        } else if ($kst_res_1 == "0000" && (jr_get_steplabel() == "Rechnungserfassung")) {
            var myString_1 = jr_get_value("tmp_ktr_sub");
            var myArray_1;

            if (myString_1 != "") {
                myArray_1 = myString_1.split(";");
                jr_set_value("sachlicher_pruefer", myArray_1[0]);
                jr_set_value("nll_auswahl", myArray_1[1]);
                jr_set_value("kfm_auswahl", myArray_1[2]);
            }
            jr_sql_refresh("tmp_rolle", array_rollen);
        }
    }
}

function array_rollen() {
    var myString = jr_get_value("tmp_rolle");
    var myArray;

    if (document.getElementById("mandant").innerHTML == "xx" && (jr_get_steplabel() == "Kaufmann" || jr_get_steplabel() == "Endfreigabe")) {
        if (myString != "") {
            myArray = myString.split(";");
            jr_set_value("freigaberolle_tmp", myArray[0]);
            jr_set_value("nll_rolle", myArray[1]);
            jr_set_value("startrolle", myArray[2]);
            jr_set_value("sp_rolle", myArray[3]);
        }
        VERTRETUNG_AKTIV();
    } else if (jr_get_steplabel() == "Rechnungserfassung") {
        if (myString != "") {
            myArray = myString.split(";");
            jr_set_value("freigaberolle", myArray[0]);
            jr_set_value("nll_rolle", myArray[1]);
            jr_set_value("erfassungsrolle", myArray[2]);
            jr_set_value("sp_rolle", myArray[3]);
            jr_set_value("ob_rolle", myArray[4]);
        }
        array_kst_sub_rechnungserfassung();
    }
}

function array_kst_sub_rechnungserfassung() {
    if (jr_get_subtable_value('Rechnunungserfassung_short', '0', 'kostentraeger') == "") {
        var myString = jr_get_value("tmp_kst_sub");
        var myArray;

        if (jr_get_steplabel() == "Rechnungserfassung") {
            if (myString != "") {
                myArray = myString.split(";");
                jr_set_value("niederlassung", myArray[0]);
                jr_set_value("sachlicher_pruefer", myArray[1]);
                jr_set_value("kfm_auswahl", myArray[2]);
                jr_set_value("nll_auswahl", myArray[3]);
            }
        }
    }
}

function VERTRETUNG_AKTIV() {
    if (document.getElementById("mandant").innerHTML == "xx" && (jr_get_steplabel() == "Kaufmann" || jr_get_steplabel() == "Endfreigabe")) {
        jr_sql_refresh("VER_STATUS");
        jr_sql_refresh("VERTRETER", VERTRETUNG_OKAY);
    } else {
        KONTROLLE();
    }
}

function VERTRETUNG_OKAY() {
    if (document.getElementById("mandant").innerHTML == "xx" && (jr_get_steplabel() == "Kaufmann" || jr_get_steplabel() == "Endfreigabe")) {
        if (jr_get_value("VER_STATUS") == "1" && jr_get_value("VERTRETER") == $JRUSER['userName'] && jr_get_value("ZEIGER_BENUTZER") == "1") {
            jr_set_value('VERTRETUNG_OK', '1');
            jr_set_value('ZEIGER_BENUTZER', '1');
        } else if (jr_get_value("VER_STATUS") == "1" && jr_get_value("VERTRETER") == $JRUSER['userName'] && jr_get_value("ZEIGER_BENUTZER") == "0") {
            jr_set_value('VERTRETUNG_OK', '1');
            jr_set_value('ZEIGER_BENUTZER', '1');
        } else if (jr_get_value("VER_STATUS") == "1" && jr_get_value("VERTRETER") != $JRUSER['userName'] && jr_get_value("ZEIGER_BENUTZER") == "0") {
            jr_set_value('VERTRETUNG_OK', '0');
            jr_set_value('ZEIGER_BENUTZER', '0');
        } else if (jr_get_value("VER_STATUS") == "1" && jr_get_value("VERTRETER") != $JRUSER['userName'] && jr_get_value("ZEIGER_BENUTZER") == "1") {
            jr_set_value('VERTRETUNG_OK', '0');
            jr_set_value('ZEIGER_BENUTZER', '1');
        } else if (jr_get_value("VER_STATUS") == "0" && jr_get_value("ZEIGER_BENUTZER") == "1") {
            jr_set_value('VERTRETUNG_OK', '0');
            jr_set_value('ZEIGER_BENUTZER', '1');
        } else if (jr_get_value("VER_STATUS") == "0" && jr_get_value("ZEIGER_BENUTZER") == "0") {
            jr_set_value('VERTRETUNG_OK', '0');
            jr_set_value('ZEIGER_BENUTZER', '0');
        }
    }
    KONTROLLE();
}

function KONTROLLE() {
    if (jr_get_value("tmp_r5") == "" && jr_get_steplabel() == "Kaufmann") {
        jr_reset_value("tmp_r5");
        jr_set_value('ZEIGER_BENUTZER', '1');
    }
    if (jr_get_value("tmp_r7") == "" && jr_get_steplabel() == "Kaufmann") {
        jr_reset_value("tmp_r7");
    }
    if (jr_get_value("tmp_r4") == "" && jr_get_steplabel() == "Kaufmann") {
        jr_reset_value("tmp_r4");
    }

    if (jr_get_value("tmp_r7") == "" && jr_get_steplabel() == "Endfreigabe") {
        jr_reset_value("tmp_r7");
        jr_set_value('ZEIGER_BENUTZER', '1');
        jr_reset_value("nll_auswahl");
        jr_reset_value("nll_pers");
    }

    if (jr_get_value("tmp_r5") == "" && jr_get_steplabel() == "Endfreigabe") {
        jr_reset_value("tmp_r5");
    }

    if (jr_get_value("tmp_r4") == "" && jr_get_steplabel() == "Endfreigabe") {
        jr_reset_value("tmp_r4");
    }

    HKST();
}

function HKST() {
    if (jr_get_value("ZEIGER_BENUTZER") == "0") {
        jr_show_element("HKST");
    } else {
        jr_hide_element("HKST");
    }
}

Gruß
LydiaVamos
 
Boom das ist schon ein ziemlich großer Happen.
Aber bisserl was ist mir aufgefallen.

gleich in der ersten Funktion die Frage nach dem ersten Parameter ist schon im 1.IF - Zweig beantwortet da du mit && abfragst müssen alle Parameter true zurück geben.
Code:
 if (document.getElementById("mandant").innerHTML == "xx" && jr_get_value('KST_AENDERUNG') == "" && jr_get_value('ZEIGER_BOX_xx') != "gemeinyy") {
        if (
 //////////document.getElementById("mandant").innerHTML == "xx" &&///////////////////////////////// 
 (jr_get_steplabel() == "Kaufmann" || jr_get_steplabel() == "Endfreigabe")) {

- - - Aktualisiert - - -

Besser du fängst nochmal von Vorne an
Dein else if kommt nie zur Ausführung
weil es die selbe Abfrage macht wie
zuvor das If.
 
Zurück
Oben