[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