W którym miejscu zmienić rozmiar paczki danych

1

Cześć,
mam taki dylemat w kodzie - układ jest następujący

// Tutaj jest jakaś główna metoda naczelnej klasy do liczenia

DataCollector dc; // Pobierane są dane za zakres dat od-do 

for( const auto & item : dc )
{
  out_view << item; // Tutaj jest klasa abstrakcyjna, która w zależności od tego co zostało wybrane z fabryki zapisywane są wyniki w różnym układzie tabeli
}

I teraz mam taki dylemat.
W jednym z przypadków tego out_view muszę obsłużyć DST dla wszystkich dni. W sensie niezależnie od tego, czy DST jest w danym dniu, czy nie, to ilość kolumn jest np. 25 (bo jesienią mamy jedną godzinę "dodatkowo"), natomiast ilość danych jest tylko za 24h.

Moje pytanie jest następujące, która klasa ma wziąć na klatę ten wyjątek od reguły i zmienić rozmiar paczki danych, aby nie zmieniać już kształtu tej pętli? DataCollector, ta w której jest to liczone, czy widok? Intuicyjnie czuję, że widok na 100% nie, bo on tylko formatuje i pilnuje, aby wpisy lądowały w odpowiednich komórkach w excelu, tak nie mam pewności, czy DataCollector powinien mieć taką możliwość jak "przewymiarowanie" paczki danych.

edit

Drugie moje podejście do wyjaśnienia

Mamy jakiś vector danych chronologicznie zapisanych i chciałbym je wypisać do tabeli o długości n-kolumn.
Problem w tym, że danych tych jest za mało, a ja muszę chciałbym mieć zawsze ten vector o rozmiarze takim, żeby móc swobodnie wypełniać wszystkie kolumny.

screenshot-20230712133519.png

Przykładowa tabela powyżej. Mam dane pobrać za 2021-01-01 - 2021-01-07 ale aktualnie z klasy dostanę 6-elementowy vector, bo nie ma danych za 03.01.2021.
Więc ja chciałbym sobie ten vector "rozciągnąć" o ten jeden wpis za 03.01.2021.
I moje pytanie jest takie, która klasa powinna wziąć za to odpowiedzialność, bo ten wymóg jest np. tylko dla tego widoku tabeli, ale np. dla innego widoku już po prostu kolumny 03.01.2021 nie będzie.

@ZrobieDobrze: teraz trochę udało mi się rozjaśnić kontekst?

screenshot-20230712134030.png
Tak mi się wydaje, że ten screen będzie lepszy

  • chciałbym mieć możliwość zrobienia takich dwóch widoków tych samych danych, ale muszę gdzieś dokładać ten 2:00A. I pytanie, w którym miejscu to robić - przy odbiorze danych, czy w widoku końcowym, czy może pomiędzy?
2

Może empty object pattern? Tworzysz sekwencję wymaganego zakresu dat, jeżeli masz w swojej kolekcji obiekt przypisany do daty, to wstawiasz ten obiekt, jeżeli nie, to wstawiasz instancję pustego obiektu, tak jakby wypełniacz.

Chyba że źle zrozumiałem problem.

Zrobiłbym to na widoku, bo czy gdzieś indziej potrzeba takiej gimnastyki?

0

Dobrze zrozumiałeś, właśnie miałem wątpliwości, czy robić to na widoku, czy w tej klasie co zwraca te dane, bo w nie wiem, czy wtedy przez te fikołki nie wycieknie mi pseudo-logika widoku.

1

Jak dla mnie miejsce tego jest na widoku, z tego co piszesz luki w sekwencji dat są istotne z perspektywy prezentacji.

0

Tak, tylko widok do tej pory był głupi, w sensie nie wiedział o lukach tylko brał z listy jak idzie elementy. A teraz właśnie dodali trzeci rodzaj widoku, który ma się właśnie tę wadę, że np. nowa doba ma być w nowym wierszu :/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.