mam problem z obliczeniem sumy poszczególnych kolumn i wierszy w tabeli.
Mam tabelę z danymi, które mogę sobie filtrować.
W ostatniej kolumnie chciałbym wyświetlić sumę kolumn z danego wiersza i analogicznie w ostatnim wierszu chcę wyświetlić sumę wszystkich wierszy w danej kolumnie.
Jednak nie wiem za bardzo jak to zrobić.
Po filtracji chciałbym pobrać value tylko z pól aktualnie wyswietlonych (sprawdzam po parametrze display), dla nich próbuję dodać klasę activ, jednak funkcja dodawania klasy wykonuje się szybciej niż cały skrypt zmiany display i ta klasa cały czas jest.
nie wiem jak mogę pobrać value innym sposobem tylko z wyświetlonych elementów.
Proszęo pomoc.
ps. oczywiście zliczanie wartości w wierszach/kolumnach dotyczy tylko kolumn z wartościami liczbowymi.
#####EDIT
częściowo udało mi się rozwiązać problem sum po filtracji.
Jednak nadal mam problem z wyświetleniem poprawnej sumy kolumn przy użyciu multi filtracji (czyli wybraniu paru parametrów), wyniki w samej tabeli spełniają kryteria jednak do wartości liczbowych nie mogę się dostać.
To mój kod js, który działa pod względem wyświetlania wyników po filtracji oraz obliczenia sum przy filtrowaniu tylko jednej kolumny na raz.
$(document).ready(function() { var options1 = { selectOptionLabel: 'Wybierz', matchingRow: function(state, tr, textTokens) { //USTAWIENIE WARTOŚCI SUMY NA 0 PRZED SUMOWANIEM WYSWIETLONYCH WIERSZY $('.filter').change(function(){ $('.suma_kolumna_5').text('0'); $('.suma_kolumna_6').text('0'); $('.suma_kolumna_7').text('0'); $('.suma_kolumna_8').text('0'); $('.suma_kolumna_9').text('0'); $('.suma_kolumna_10').text('0'); }); //ID WYSWIETLONYCH WIERSZY -- działa poprawnie tylko przy filtrowaniu jednej kolumny na raz, w przypadku 2 filtracji zwraca id wierszy po pierwszym filtrze i id wierszy po drugiej filtracji var id_wiersza = tr.attr('id'); //OBLICZANIE SUM DLA DANYCH KOLUMN var wartosc_kolumny5 = parseInt($('.suma_kolumna_5').text()) + parseInt($('.wiersz'+id_wiersza + ' .kolumna5').text()); var wartosc_kolumny6 = parseInt($('.suma_kolumna_6').text()) + parseInt($('.wiersz'+id_wiersza + ' .kolumna6').text()); var wartosc_kolumny7 = parseInt($('.suma_kolumna_7').text()) + parseInt($('.wiersz'+id_wiersza + ' .kolumna6').text()); var wartosc_kolumny8 = parseInt($('.suma_kolumna_8').text()) + parseInt($('.wiersz'+id_wiersza + ' .kolumna8').text()); var wartosc_kolumny9 = parseInt($('.suma_kolumna_9').text()) + parseInt($('.wiersz'+id_wiersza + ' .kolumna9').text()); var wartosc_kolumny10 = parseInt($('.suma_kolumna_10').text()) + parseInt($('.wiersz'+id_wiersza + ' .kolumna10').text()); //OBLICZANIE SUM DLA DANYCH WIERSZY var wiersz_suma = parseInt($('.wiersz'+id_wiersza + ' .kolumna5').text())+ parseInt($('.wiersz'+id_wiersza + ' .kolumna6').text())+ parseInt($('.wiersz'+id_wiersza + ' .kolumna7').text())+ parseInt($('.wiersz'+id_wiersza + ' .kolumna8').text()) + parseInt($('.wiersz'+id_wiersza + ' .kolumna9').text()) + parseInt($('.wiersz'+id_wiersza + ' .kolumna10').text()); //WSTAWIANIE SUM DO OSTATNIEGO WIERSZA KOLUMN $('.suma_kolumna_5').text(wartosc_kolumny5); $('.suma_kolumna_6').text(wartosc_kolumny6); $('.suma_kolumna_7').text(wartosc_kolumny7); $('.suma_kolumna_8').text(wartosc_kolumny8); $('.suma_kolumna_9').text(wartosc_kolumny9); $('.suma_kolumna_10').text(wartosc_kolumny10); //WSTAWIANIE SUM DO OSTATNIEJ KOLUMNY DANEGO WIERSZA $('.suma_wiersz'+id_wiersza).text(wiersz_suma); return true; } } $('#demotable1').tableFilter(options1); });
Ma ktoś pomysł jak mogę zwrócić poprawne sumy kolumn po multi filtracji??
Mam też pytanie o optymalizację tego kodu, nie wydaje mi się żeby ten bym zoptymalizowany (długo się wykonuje), a nie mam pomysły jak go ulepszyć (usprawnić), tym bardziej że nie wiem jakiej wielkości będę dostawał tabelę może być nawet pare/parenaście tyś wierszy.
tak jak już pisałem do filtracji używam -> plugin filtracji
a dotychczasowe wyniki i sposób wyświetlania tabeli można zobaczyć -> tutaj