Modyfikacja skryptu odświeżającego tabelkę

0

Witam serdecznie,
Miałem taki skrypt (oryginał): http://serwer1356363.home.pl/drukarnia_demo/wizytowki2_org.php

Zmodyfikowałem go dodając parę nowych kategorii i produktów: http://serwer1356363.home.pl/drukarnia_demo/wizytowki.php

Skrypt oryginalny działa tak, że jak zmienię wartości w selectach "Lakierowanie, foliowanie" oraz "Kształt narożników" - to filtruje tabelkę z produktami.

Nie wiem dlaczego po dodaniu produktów to filtrowanie przestało działać :(
Produkty zaczytują się poprawnie, zlicza także.... wszystko niby okey.... tylko filtr przestał działać :(

Wie ktoś może dlaczego to nie działa i jak można to naprawić?

Bardzo proszę o pomoc

0

W tym fragmencie:

                             function filtrujDane(dane) {
                                    var pierwszy = document.getElementById('uszlachetnienie').value;
                                    var drugi = document.getElementById('narozniki').value;

                                    return dane.filter(function (wiersz) {
                                        if (pierwszy == '' || wiersz.rowVal[0][7] === pierwszy) {
                                            return wiersz;
                                        }
                                    }).filter(function (wiersz) {
                                        if (drugi == '') {
                                            return wiersz;
                                        } else if (wiersz.rowVal[0][8] === drugi) {
                                            return wiersz;
                                        }
                                        //return !drugi || wiersz.rowVal[0][8] === drugi + 'b';
                                    });
                                }

Przestało działać:

wiersz.rowVal[0][7] === pierwszy 
i
wiersz.rowVal[0][8] === drugi

Ponieważ wcześniej Twoja struktura danych wyglądała tak:

                                      {
                                        "rowDesc": ["minimum 500 szt"],
                                        "rowVal": [
                                            ["10 zł", "14 zł", "12 zł", "25 zł", "11", "12", "13", "1a", "1b"]
                                        ],
                                        "rowVal2": [
                                            ["2|500 szt|10|14|12|25|11|12|13|1a,1b"]
                                        ]
                                    }

A teraz zabrakło "1a", "1b" (czy coś w tym stylu) na na pozycjach [0][7] i [0][8] rowVal, np:
"rowVal": [ ["72.62 zł", "102.88 zł", "104.39", "105.90", "104.39", "105.90", "104.39", "105.90", "104.39", "105.90"]]

Chyba warto pomyśleć nad uporządkowaniem tej struktury danych :)

0

Dziękuję bardzo za pomoc :)

Faktycznie, przegapiłem to. Dodałem, ale w dalszym ciągu nie filtruje mi :(

Mógłbyś zerknąć jeszcze raz?

Bardzo dziękuje

1

Mogłabym :)

Jednak problem w tym, ze Twoja struktura danych nie jest elastyczna. Filtrujesz po konkretnych pozycjach z rowVal, wiec te oczekiwane wartości 1a, 1b musza być w tych konkretnych polach tablicy. Wiec masz do wyboru: poprawić strukturę danych, aby byla bardziej elastyczna, zmienić indeksy w tych dwóch wierszach, które wkleiłam wyżej lub nie dodawać danych ;)

Nie bardzo wiem, co te dane dokadnie opisuja, ale moze cos w tym stylu byloby lepsze:

{
                                        "rowDesc": ["minimum 500 szt"],
                                        "rowVal": [
                                            ["10 zł", "14 zł", "12 zł", "25 zł", "11", "12", "13"]
                                        ],
                                        "rowVal2": [
                                            ["2|500 szt|10|14|12|25|11|12|13|1a,1b"]
                                        ], 
                                        "allowed":["1a", "1b"]
                                    }
 

I wtedy te dwa niedziałające wiersze zamień tak, aby sprawdzały czy szukana wartość jest w wiersz.allowed.

Myślę, ze te dane potrzebują kilku poprawek.

0

tzn. to działało i wolałbym to pozostawić jak jest.... bo to spełnia moje oczekiwania (dopóki działało) ;-)
A im więcej w tym będę grzebał, tym bardziej się posypie pewnie :(

Ten skrypt ma już 100% funkcji jakie chce :)
Dlatego ten układ danych może być....

W tym skrypcie już nic nie zmienię prócz grafiki :)

Mam taką "bazę danych":

 
"rowDesc": ["minimum 250 szt"],
                                        "rowVal": [
                                            ["54.12", "92.29", "92.29", "93.80", "92.29", "93.80", "92.29", "93.80", "92.29", "93.80", "1a", "1b"]
                                        ],
                                        "rowVal2": [
                                            ["1|200 szt|54.12|92.29|92.29|93.80|92.29|93.80|92.29|93.80|92.29|93.80|1a,1b"]
                                        ]

Te indeksy też zmieniłem:

 
 function filtrujDane(dane) {
                                    var pierwszy = document.getElementById('uszlachetnienie').value;
                                    var drugi = document.getElementById('narozniki').value;

                                    return dane.filter(function (wiersz) {  
                                        if (pierwszy == '' || wiersz.rowVal[0][11] === pierwszy) {
                                            return wiersz;
                                        }
                                    }).filter(function (wiersz) {
                                        if (drugi == '') {
                                            return wiersz; 
                                        } else if (wiersz.rowVal[0][12] === drugi) {
                                            return wiersz;
                                        }
                                        //return !drugi || wiersz.rowVal[0][8] === drugi + 'b';
                                    });
                                }
								

Dobrze zmieniłem?:)

Dziękuje Ci bardzo za cierpliwość :))

0

Przepraszam, źle mnie zrozumiałeś :(
Chodziło mi o to że chce to że ten skrypt jest dla mnie okey.... ten pierwotny.... dodałem nowe dane i chciałem go wstawić na stronę, tylko przestał mi działać....
Nie znam za dobrze js'a (programuje głównie w php, c#) - i dlatego "boję" się go ruszać ;-)

0

chyba faktycznie, miałem źle te indeksy :) dziękuje Wam bardzo za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1