Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano (edytowane)

Tak z ciekawości popatrzyłem na skrypt obliczający cenę. Niestety informatyk się nie popisał. Poniżej skrypt liczący cenę i zaokrąglający ją do dwóch miejsc po przecinku. Aby działał na stronie wystarczy zastąpić nim istniejący skrypt.

var float_glass_price_list = [112, 146, 213, 314, 437, 583, 896]
var opti_glass_price_list = [250, 330, 440, 550, 750, 1150, 1250]
var glass_thickness = [4, 6, 8, 10, 12, 15, 19]

function wycena() {
    var length = parseInt(document.kalkulator.dlugosc.value) * 0.01;
    var height = parseInt(document.kalkulator.wysokosc.value) * 0.01;
    var width = parseInt(document.kalkulator.szerokosc.value) * 0.01;
    var glass_type = document.kalkulator.rodzaj.value == "b" ? "opti" : "float"

    var total_price;
    var area;
    if (document.kalkulator.rodzaj.value == "a" || document.kalkulator.rodzaj.value == "b") {
        area = calculate_area(length, height, width, glass_thickness[map_thickness_to_position()])
        total_price = area * get_glass_price_by_type(glass_type)
    } else {
        area = calculate_area(length, height, width, glass_thickness[map_thickness_to_position()])
        var opti_area = calculate_opti_area(length, height, width, glass_thickness[map_thickness_to_position()])
        var remaining_area = area - opti_area;
        total_price = remaining_area * get_glass_price_by_type("float") + opti_area * get_glass_price_by_type("opti")
    }

    document.kalkulator.cena.value = Math.round(total_price * 100) / 100
}

function get_glass_price_by_type(typ) {
    var index = map_thickness_to_position()

    return typ == "float" ? float_glass_price_list[index] : opti_glass_price_list[index]
}

function map_thickness_to_position() {
    var thickness = []
    thickness["a"] = 0;
    thickness["b"] = 1;
    thickness["c"] = 2;
    thickness["d"] = 3;
    thickness["e"] = 4;
    thickness["f"] = 5;
    thickness["g"] = 6;

    return thickness[document.kalkulator.grubosc.value]
}

function calculate_opti_area(length, height, width, glass_thickness) {
    glass_thickness = glass_thickness * 0.001

    if (document.kalkulator.rodzaj.value == "c") return length * height

    var front_and_rear_area = length * height
    var side_area = (height - glass_thickness) * (width - 2 * glass_thickness)

    return front_and_rear_area + 2 * side_area

}

function calculate_area(length, height, width, glass_thickness) {
    glass_thickness = glass_thickness * 0.001

    var bottom_area = length * (width - 2 * glass_thickness)
    var side_area = (height - glass_thickness) * (width - 2 * glass_thickness)
    var front_and_rear_area = length * height

    return bottom_area + 2 * front_and_rear_area + 2 * side_area
}

 

 

Edytowane przez rekawiczka
  • 2 miesiące temu...
  • 3 tygodnie później...

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.


×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

By using this site, you agree to our Warunki użytkowania.