Logika
17 godz. 49 min · Biznes i Automatyzacje
Krzysiek PiekarzAutomation Specialist / No-code DeveloperCzy w Twojej głowie pojawił się pomysł na aplikację, która zrewolucjonizuje świat na miarę Facebook'a, Instagrama albo Airbnb? A może zgłosił się do Ciebie klient, który chce przetestować i wdrożyć swój projekt w jak najszybszym czasie?Jeśli tak było to na pewno zadajesz sobie teraz kolejne pytanie - od czego zacząć? Czy muszę posiadać odpowiednią wiedzę programistyczną? Na jaki język programowania się zdecydować lub z jakiego gotowego framework'u skorzystać? A może zatrudnić profesjonalnego designera i software house, który pozwoli mi zrealizować ten projekt?Niezależnie od tego czy czy zdecydujesz się działać sam/a, czy też przekażesz projekt do zewnętrznej agencji i tak staniesz przed kolejnym dylematem jakim jest nauka programowania lub konieczność przepalenia nawet setek tysięcy złoty na coś, co może okazać się niewypałem.Na szczęście szybki rozwój narzędzi no-code sprawia, że możesz wybrać jeszcze trzecie wyjście. Zaprojektować, zbudować i wypuścić w świat swoją wymarzoną aplikację tylko za pomocą własnych sił i to bez konieczności posiadania specjalistycznej wiedzy programistycznej, a nawet posiadając jedynie podstawową znajomość narzędzi do design'u.Pamiętaj również o tym, że projekt ten podzieliłem na dwie części. Ten kurs to druga część, w której zapoznamy się z bardziej zaawansowanymi opcjami, jakie zapewnia nam edytor Bubble. Zdobytą w ten sposób wiedzę teoretyczną wykorzystamy od razu w praktyce dodając do naszego statycznego designu odpowiednią logikę, dzięki czemu nasz finalny projekt będzie już w pełni działającą aplikacją.Jeśli tylko potrafisz w podstawowym zakresie pracować z edytorem Bubble, budować w nim design aplikacji i rozumiesz czym są option sets oraz workflows to posiadanie wiedzy z poprzedniego kursu nie jest koniecznie wymagane. Natomiast szczerze zachęcam Cię przynajmniej do przejrzenia materiałów z pierwszej części, gdzie skupiamy się właśnie na podstawach, ponieważ teraz będziemy efektywnie przechodzić do bardziej zaawansowanych tematów i rozbudowywać naszą aplikację.
W tym kursie „MVP aplikacji w rekordowym czasie z Bubble (Logika)” nauczę Cię jak zamienić statyczny layout na pełnoprawną aplikację. Poruszymy takie tematy jak praca z bazą danych, privacy rules oraz bardziej zaawansowane workflows, które dodamy zarówno na froncie jak i backendzie naszej aplikacji. Dzięki zdobytej wiedzy dodamy logikę wszędzie tam, gdzie tego wymaga nasz projekt, a dodatkowo wzbogacimy go o możliwość płatności poprzez najbardziej popularny na świecie system jakim jest Stripe. To jednak nie koniec ponieważ przygotowałem dla Ciebie również szereg innych ważnych zagadnień, które omówimy i wykorzystamy w praktyce.W ramach nauki skupimy się na jak najbardziej praktycznym podejściu. Zapomnij o długich i nudnych lekcjach pełnych teorii, które zapomnisz zaraz po obejrzeniu. Będziemy budować a nie debatować! W ten sposób nauczysz się pracować z edytorem Bubble na poziomie zaawansowanym. Zrozumiesz jak zabezpieczyć swoje dane przed nieuprawnionym dostępem, w jaki sposób pobierać i dynamicznie filtrować rekordy z bazy danych. A także jak wykorzystać auto-binding by móc je aktualizować bez wykorzystania skomplikowanych workflows.Dodamy do naszej aplikacji prosty komunikator, który pozwoli na wymianę wiadomości pomiędzy użytkownikami. Zadbamy również o możliwość wysyłania powiadomień mailowych poprzez zewnętrzne serwisy by ich wygląd był zgodny z naszym brandem. Nie zabraknie również takich tematów jak SSO z Google czy też proste automatyzacje z wykorzystaniem serwisu Make.
Materiał szkoleniowy został zaprojektowany tak, aby mogło z niego skorzystać jak najszersze grono odbiorców. Nieważne czy jesteś totalnym laikiem, czy też posiadasz już wiedzę z zakresu programowania lub designu, na pewno znajdziesz tu coś dla siebie. A więc kto jeszcze może skorzystać z wiedzy zawartej w tym kursie?
Nasza wyszukiwarka jest już niemal gotowa, ale nadal stoi przed nami jedno zadanie,
czyli uwzględnienie dat, które podał nasz user w wynikach wyszukiwania.
Pomimo tego, że teoretycznie zadanie to wydaje się dosyć proste, wcale takie nie
jest i dlatego też postanowiłem poświęcić na nie osobną lekcję.
Dodatkowo rozwiązanie, które udało mi się namierzyć i które zaprezentuję Ci jako
finalne, też nie jest pozbawione wad, ale moim zdaniem w największym stopniu
realizuje to, czego potrzebujemy.
Więc jeśli kiedyś uda Ci się znaleźć prostsze wyjście, które zadziała, to
odezwij się do mnie, bo z chęcią się z nim zapoznam.
Jak już bowiem wspominałem Ci wiele razy, w Babel, do rozwiązania danego problemu
możemy podejść na wiele różnych sposobów.
Ale nie przedłużając już więcej i przystąpimy do działania.
Twoje czujne oko pewnie już zdążyło zauważyć, że na wszystkich moich
listingu powrócił Nowy Jork jako miasto.
I tak zrobiłem to specjalnie.
Czyli wracamy tutaj do zakładki Data do listingu.
W moim przypadku przynajmniej do tych, które należą do Sary
i tutaj wszędzie Sidi zmieniamy na Nowy Jork, dzięki czemu będzie nam się po
prostu z tym dużo łatwiej pracowało i tworzyło właśnie odpowiednie conditions.
Ale ok, mam nadzieję, że też już to zrobiłeś.
Dodatkowo jeżeli przejdziemy teraz do Data Types i tutaj do listingu, to mamy dwa
pola, w których przechowujemy właśnie te zablokowane daty.
Pierwsze z nich to bukiet date, czyli po prostu lista z datami.
A drugie to bukiet dat Rangers, czyli po prostu lista z tymi przedziałami
dat, czyli date range.
Jak to wygląda?
A właśnie w taki sposób tu mamy przedział, czyli date range od daty do daty.
Oczywiście takich przedziałów byłoby więcej, gdybyśmy mieli więcej tutaj
bookingu, natomiast tutaj mamy po prostu listę dat, czyli znów przedział od 11 do
24, ale dodano tutaj każdą datę, czyli 11, 12, 13 itd.
W naszych działaniach spróbujemy w pierwszej kolejności wykorzystać oba
te pola, aby właśnie uzyskać odpowiednie rezultaty.
Natomiast niezależnie od tego, z którego rozwiązania skorzystamy,
będziemy mieć jeden zasadniczy problem.
Jeżeli wrócę teraz do podglądu.
to nieważne czy wykorzystamy datę Rangers, czy wykorzystamy tą listę
dat w wynikach, otrzymamy ten rezultat, który chcemy z tej listy odrzucić.
Czyli odwrotność tego, czego poszukujemy.
Czyli jeśli tutaj mamy np.
datę 24 30 czerwca, to chcemy z naszej listy właśnie odrzucić te listing?
Gdzie w tych datach mamy jakieś bookingu?
Mam nadzieję, że to rozumiesz.
Natomiast zaraz zobaczysz, że nasze działania przyniosą odwrotny skutek
i zwrócą nam właśnie te rezultaty, których chcemy się pozbyć.
A więc skoro mniej więcej wiesz, jak to będzie działało, no to teraz
przystąpimy do działania.
Wracamy więc oczywiście do naszego designu na stronę search.
Mamy tutaj grupę Result Repeat Group, której obecnie wyświetlamy
najpierw tą grupę pomocniczą Listing Scripting Group,
którą sobie filtrujemy i tu przekazujemy wszystkie nasze filtry.
Ja więc będę chciał wykonać tutaj bardzo podobną operację,
czyli przechodzę do naszego papu.
Dodaję tutaj kolejną grupę.
Nazwijmy ją może ją listing, Może tak.
listing data repeat using group.
I tutaj tak w pierwszej kolejności chcę się odnieść właśnie do tej
głównej grupy pomocniczej, czyli Jul Listing Scripting Group, czyli właśnie do
tej, gdzie mamy właśnie to ograniczenie.
Po mieście i po liczbę gości.
I teraz dopiero ją sobie filtrować przekazując właśnie te parametry
dotyczące dat, czyli filtry.
Dajemy nowy const main.
Wybieramy Advanced.
Najpierw spróbujmy wykorzystać to pole, które zawiera listę dat Rangers,
czyli u nas jest to Disk Listing Pocket DAT Rangers.
Ponieważ jest to lista ta, porównujemy element do elementu, a tutaj takim
elementem będzie Range czyli Contains.
I teraz musimy przekazać odpowiedni date range.
Jak taki date range uzyskać skoro mamy datę Pekin i checkout?
No to już wiesz jak taki range utworzyć.
Ja pokazywałem Ci to wcześniej.
Wybieramy najpierw parametr startowy, czyli tutaj będzie date Jest to check in.
Wstawiamy znacznik range i podajemy datę końcową.
U nas będzie to oczywiście czekał.
Odpisujemy na wszelki wypadek Ignore emotikon train.
Tutaj nie powinniśmy mieć z tym problemu, ale lepiej to zaznaczyć.
No i teraz nie mamy żadnego błędu.
Nie świeci się nic na czerwono, a więc powinno to tutaj odpowiednio zadziałać.
Sprawdźmy, czy rzeczywiście tak jest.
Klikam close i teraz wyniki właśnie z tej naszej nowej grupy.
Gdzie my to ustawiliśmy?
OK, dodaliśmy filtrowanie, nie tutaj copy expression.
Tutaj usuwamy, bo to jest nasza główna grupa.
Chcemy to zrobić oczywiście tutaj.
Tutaj dodać filtry.
Odnosimy się do Using Scripting Group listy wyników i tutaj dopiero
dodajemy to filtrowanie.
Możemy to szybko tutaj przywrócić.
Past O właśnie.
I teraz dopiero tak Wyniki tego chcę pokazywać tutaj, ale żeby
nie stracić tego, co już tutaj mamy?
No to skopiuję sobie ten data Source.
Wróćmy do naszego papu.
Jak się domyślasz, dodajemy kolejną tutaj grupę pomocniczą,
obojętnie którą sobie skopiuję.
Nazwijmy ją mój listing, może filters.
Żebyśmy wiedzieli, że to są te nasze główne wyniki przefiltrowane,
które nie zawierają tylko dat.
Będzie to Lighting Group Clear.
Wstawiamy to.
Mamy tutaj te nasze główne filtry.
OK, więc skoro to sobie już przenieśliśmy, to teraz zadbajmy o to, aby właśnie
te elementy wyświetlić tutaj.
Czyli to sobie czyszczę.
Clear tutaj będzie to listing Data Scripting group,
lista listing ów i zerknijmy, czy to w ogóle zadziałało.
Przechodzę, odświeżam.
Nie mamy żadnego wyniku.
Mamy tutaj ustawiony przedział 24 do 33 czerwca.
i zerknijmy czy w ogóle mamy jakieś Boeingi w tym terminie.
A więc wracamy tutaj przechodzimy do bookingu.
I tak to jest lipiec, to jest 4 31 czerwca, więc to nam powinno wskoczyć
25 30 to też nam powinno wskoczyć.
To też powinno się odfiltrować.
No i dodatkowo jeszcze tutaj.
Ten chyba nawet i ten dwudziesty czwarty, trzydziesty.
Tak jak widzisz, tutaj powinno nam wyskoczyć całkiem sporo rezultatów,
gdzie właśnie te daty rangi się tutaj niby pokrywają.
Natomiast niestety w Babel działa to tak, że takie pokrywanie się musi
być równe jeden do jednego.
Czyli tutaj jeżeli mam przedział np.
24 30 no to tutaj powinno się pokryć to. Zerknijmy.
Dwudziesty czwarty, trzydziesty.
Powinien pojawić się tutaj chociaż jeden rezultat.
Wróćmy jeszcze na chwilę do designu.
Czy tutaj się nie pomyliłem?
Listing Date Scripting Group?
Czy tutaj gdzieś jakieś gafy nie strzeliliśmy?
Tu jest ok.
Listing while Thread.
Bucket date changes contains i mamy tutaj przedział Pekin.
Checkout Wygląda na to, że tutaj jest ok.
Tu niby wszystko jest w porządku.
Zamknijmy, a spróbujmy zostawić 25 30.
OK.
Dwudziesty czwarty nie zadziałał tak, jak powinien do końca.
Natomiast dwudziesty piąty 38 tutaj działa.
Zerknijmy jeszcze raz na te bookingu.
Czyli odpalił się ten, a nie chciał nam wskoczyć tutaj.
Jun ten od Leo.
Doskonale wiem dlaczego. No bo pamiętasz.
Tutaj mamy Leo i tego, a my wyświetlamy tylko wyniki dla starych z Nowego Jorku.
Czyli rzeczywiście to zadziałało.
Mamy tutaj Nowy Jork, Nowy Jork, Nowy Jork i z tych dat pokrywa się tylko ten
przedział, czyli 25 30 czerwca.
A więc ten jeden wynik nam się tutaj pojawił, gdyż te daty muszą
się dokładnie pokrywać.
Czyli ten DAT musi się zgadzać dokładnie co do daty.
Natomiast po pierwsze to nie do końca jest to, o co nam chodzi, bo jeżeli użytkownik
tak jak wcześniej zaznaczy sobie 24 30, to ten listing też tam powinien wskoczyć.
Co z tego, że on jest wolny 24, skoro od 25 do 30 czyli przez większość
tego terminu jest już zablokowany.
Dodatkowo przywróćmy sobie to tak jak Ci mówiłem.
Fajnie, że wyszukałem ten listing, który pokrywa się z tymi datami, ale my
chcemy wyświetlić te wszystkie pozostałe, czyli te, które się z
tymi datami nie pokrywają.
No ale cóż, poczyniliśmy pierwszy krok, bierzemy te listing i
teraz będziemy z tym dalej działać.
Natomiast może spróbujmy w takim razie odnieść się do tej listy z datami
i sprawdzić, czy tam to zadziała.
Wracamy sobie tutaj do designu.
Dodatkowo tutaj wykorzystywaliśmy.
Właśnie tutaj taki date range.
Ja natomiast chciałbym sobie ułatwić życie i zrobić to nieco inaczej tworząc
dodatkową zmienną pomocniczą.
W tym przypadku wykorzystując znany Ci już element, czyli r date time p r wstawiamy
go sobie tutaj do naszego popu.
Przenieśmy na sam dół.
Gdzieś mi teraz wyskoczył.
Muszę go przewrócić.
Dajmy go na sam koniec. O właśnie.
I nazwijmy może ł.
Date range Date Speaker.
Dajmy wymiary 50 na 50, żeby on nam tutaj wskoczył.
Oczywiście tak, nigdzie nie będziemy go wyświetlać.
Właśnie to jest taka zmienna pomocnicza.
Jak się domyślasz tutaj do pola Initial Start Date Initial Date.
Musimy przekazać Pekin i Checkout, a więc zróbmy to.
Date.
Pekin kopiuje wklejam tutaj.
Tu będzie to po prostu checkout.
I teraz w tym polu ją listing updates repeat in group.
Zamiast takiego range mogę się tego pozbyć, tego i tego też czyli Contains
i teraz wybrać sobie Date speaker i Selected range.
Tadam!
To dokładnie to samo co mieliśmy wcześniej, ale do zyskamy też jeszcze
dodatkowe możliwości, które zaraz Ci pokażę.
Czy to działa tak jak poprzednio?
Odświeżamy tutaj wyniki wyszukiwania.
Nic nie powinno się zmienić.
Wygląda na to, że działa, a w zasadzie nie działa.
Nie chcę tutaj pokazywać tego przedziału.
OK, Booker date changes contains i mamy tutaj selected range.
Dlaczego nam to tutaj teraz nie chciało zadziałać?
Zerknijmy jeszcze tutaj.
Powinniśmy mieć 25 30.
Nic się tutaj nie powinno zmienić, chyba że znowu gdzieś popełniłem jakiś błąd.
Zerknijmy na datę p r czy Kin Checkout a.
Oczywiście nie zmieniłem tutaj jego typu single date na range.
O właśnie, to mój błąd. Przepraszam Cię najmocniej.
Teraz powinno to już działać.
Właściwie mamy tutaj range, który przekazujemy sobie tutaj i tutaj powinien
znowu pojawić się ten 1 listing.
OK, wygląda na to, że działa i jest przekazywany właściwie.
No więc dobra, teraz spróbujmy w takim razie
w tym polu filtracji pozbyć się tego bucket date changes i wykorzystać to
drugie pole, czyli Clear expression.
Odnosimy się do dist testing.
Tym razem Bucket date.
Tu mamy listę z datami, a więc porównujemy to z kolejną listą, czyli musimy tutaj
wybrać Nie contains a contains list.
I tym razem możemy się właśnie odnieść do tego Date Bakera.
Od Selected Range, ale mamy tutaj opcję Selected Reinhardt List.
Już w niej też korzystaliśmy i teraz właśnie to prawidłowo zadziała.
Gdybyśmy właśnie korzystali z tego ranga takiego znacznika w Babel, to niestety
nie mielibyśmy tutaj takiej możliwości.
Klikam nie świeci się nic na czerwono.
Wygląda na to, że wszystko jest ok.
Przejdźmy do podglądu. Odświeżamy.
I ok. I znów mamy jeden wynik.
Tutaj przedział dat nam się pokrywa, ale jeżeli znów zmienimy ten przedział na
trochę większy, to zaraz zobaczysz, że niestety znów nie będzie nam to działało.
Klikamy Search.
No i niestety jest tak jak mówiłem mamy tutaj 0 znalezionych stringów.
Dlaczego?
Ponieważ podobnie jak w przypadku Data tutaj ta lista musi pasować jeden do
jednego, czyli idealnie pokrywać się z tym, co mamy tutaj właśnie
w tych zablokowanych datach.
No niestety nie jest to to, o co nam chodziło, więc może spróbujmy
do tego podejść nieco inaczej.
Wróćmy do designu i spróbujmy w jakiś sposób
wykorzystać to, że mamy tutaj date range.
Wybieramy Clear Expression.
Odniesiemy się do niego.
Mamy tutaj New Date Range Date Speaker Selected Range.
Mamy teraz tutaj nieco więcej opcji, a ta która mnie najbardziej interesuje to ta
o nazwie Over Labs Wife, czyli właśnie ta.
Jeżeli klikniemy sobie See Reference, to okaże się, że tutaj jest.
Otrzymamy wtedy, kiedy jakakolwiek ilość itemów z pierwszej listy z pierwszego data
range będzie zawarta w tej drugiej i vice versa.
Czyli w naszym wypadku jeżeli użytkownik podał przedział 25 30 czerwca, a tam
w listingu mamy zablokowany termin 24 30, no to one się pokrywają i taki
listing powinien zostać zwrócony.
Czyli powinniśmy uzyskać dokładnie to, co chcemy.
A więc spróbujmy to zastosować.
Spróbujmy wybrać tą opcję Over labs VIV i w jakiś sposób właśnie wyciągnąć
te zablokowane dane range.
Jeżeli zrobię to w ten sposób, no to mamy tutaj czerwone.
Dlaczego?
No bo tutaj porównujemy pojedynczy date range do listy.
No nie jestem w stanie wyciągnąć ich wszystkich.
Jak widzisz, nie mamy tutaj opcji ich datę, rangę.
Musielibyśmy to porównywać do konkretnego itemu.
Niestety nie wiemy ile ich tam może być.
A więc ten sposób odpada.
Spróbujmy więc podejść do tego może od drugiej strony, czyli Clear Expression.
Odnieść się do DIS Listing Booker date changes.
No i tu niestety nie mamy Over Lab Swift, ponieważ mamy do czynienia z listą.
Jak widzisz tutaj operacje Babel dosyć mocno nas blokują.
Czy więc w takim razie jesteśmy skazani na porażkę?
Okazuje się, że nie.
Ale tak jak Ci mówiłem, musimy podejść do tego w całkiem inny sposób.
Mianowicie ja tutaj wywalam całkowicie ten filtr.
Zeruje sobie to expression tutaj.
Tutaj chcę zmienić tą nazwę z Listing Updates na.
Kings.
Listing.
Oczywiście tutaj odpowiedni znaczek i repeat ING Group.
Czyli skoro nie możemy sobie tych danych wyciągnąć bezpośrednio z listingu, to
musimy wykorzystać utworzone bookingu.
A więc to zostawiamy jak jest.
Wybieramy Search for.
Tym razem szukamy Booking.
Zaznaczmy sobie to na wszelki wypadek i teraz mamy Date range.
Możemy wybrać Over Labs. Wife.
I tutaj przekazać właśnie ten droid range, który przekazał nam znowu użytkownik,
a my trzymamy go sobie właśnie tutaj.
View date Range day Speaker Nie date tylko Selected range.
Nic nam się nie świeci na czerwono klikam Browse.
Oczywiście tutaj z bookingu musimy wyciągnąć wszystkie castingi i ok.
No i teraz mamy właśnie te mitingi, których poszukiwaliśmy.
Jak widzisz nie jest to idealne rozwiązanie, ponieważ wciąż poszukujemy.
W tym przypadku bardzo dużą ilość bookingu, niekoniecznie powiązaną właśnie
z tymi listingu, a tym bardziej przynajmniej na ten moment
w ogóle nie powiązaną z miastem, które wybrał użytkownik.
Ale to zaraz poprawimy.
Natomiast zerknijmy, czy to w ogóle zadziała.
Przechodzę, odświeżam.
Mamy zero listingu, ale to nie dlatego, że wyszukiwarka nam nie zadziała,
ale dlatego, że odpaliło się nam tutaj privacy rules
data privacy I dla bookingu na razie jestem niezalogowany, a więc nie
jestem w stanie tutaj nic zrobić.
Muszę zaznaczyć te dwie opcje Find this insert chess, czyli właśnie search for.
I jeszcze potrzebuję wyświetlać tutaj listing, które znaleźliśmy.
Teraz powinno to już zadziałać. Odświeżamy.
OK. I rzeczywiście mamy tutaj 3 listing.
Jak widzisz, jeden jest w Nowym Jorku, drugi jest w Kalifornii,
trzeci jest gdzieś we Włoszech.
Dlaczego?
Dlatego, że zadziałało tylko ograniczenie z tymi datami.
Dodatkowo, jak widzisz, te daty nie muszą idealnie się pokrywać.
Jak pamiętasz, tutaj mieliśmy 25 30 czerwca.
Mamy 24 30 i one częściowo się pokrywają.
A więc ten listing został zwrócony, a my później taką właśnie listę
będziemy mogli wykorzystać dalej.
Natomiast jak teraz pozbyć się tych listingu, gdzie miasto
się w ogóle nie zgadza?
Nie chcemy właśnie wyświetlać tutaj aż tak dużej tej listy.
Wracamy do edytora do Design. designu.
Przechodzimy właśnie tutaj i zanim wyciągniemy listing, to jeszcze
powinniśmy odfiltrować sobie miasto.
Natomiast nie zrobimy tego bezpośrednio tutaj, ponieważ zwyczajnie
nie mamy tutaj pola City.
Moglibyśmy oczywiście poprawić sobie nasz Data Type i potem odpowiednio zmodyfikować
workflow, żeby przy tworzeniu bookingu właśnie takie miasto
nam się tutaj dodawało.
I będzie to na pewno bardzo przydatny krok i postaramy się to wdrożyć
w jednej z kolejnych lekcji.
Natomiast na razie pracujemy z tym, co mamy.
A więc musimy tutaj najpierw to przefiltrować, czyli filtry.
Chcemy tutaj zrobić.
Chcemy odwzorować ten warunek, gdzie CT
Miasto znajduje się w odległości 50 kilometrów od tego, które mamy
zawarte w parametrze Location.
Jak do tego podejść?
W tym przypadku jest to trochę bardziej skomplikowane,
ale też damy radę to osiągnąć.
Przechodzimy sobie tutaj właśnie do Advanced.
I mówimy this booking listing.
Stąd dopiero jesteśmy w stanie wyciągnąć miasto.
I teraz musimy powiedzieć, że dystans od takiego miasta do tego miasta,
którego mamy w location, czyli URL.
Oczywiście bez literówek.
Geografii adres Taki dystans w kilometrach, bo tak
mieliśmy tam zaznaczone musi być mniejszy bądź równy 50.
To jest właśnie odwzorowanie dokładnie tego constans, które mieliśmy tam nieco
inaczej zapisane, ale efekt końcowy jest dokładnie taki sam.
I dopiero teraz, gdy mamy przefiltrowane właśnie takie Boeingi, jeszcze tutaj po
mieście, wyciągamy sobie z nich ratingi, bo te nas interesują.
Czyli mamy taki zapis.
Wracamy, odświeżamy i teraz powinniśmy odzyskać tylko ten jeden element, ponieważ
to nie jest Nowy Jork, ani to nie jest Nowy Jork.
Wygląda na to, że w końcu zadziałało nam to poprawnie.
To filtrowanie po datach i po mieście jest już ustawione.
Natomiast właśnie zwracamy nie to, co chcemy.
Zwracamy listing, który chcemy usunąć z głównej listy.
Ale skoro mamy jedną listę i mamy drugą listę, to możemy zastosować
kolejną sztuczkę.
Przejść tutaj do tej grupy Result Scripting Group i zamiast właśnie
tej repeat in grupy wybieramy Clear.
Najpierw odnosimy się do tej naszej, gdzie mamy wszystkie przefiltrowane rezultaty.
Tu w ogóle nie braliśmy jeszcze pod uwagę tego miasta.
Mamy tę listę i mamy również tam.
Nie tyle miasta przepraszam, co dat.
Czyli mamy tutaj wszystkie listing, gdzie miasto nam się zgadza,
ale w ogóle nie braliśmy pod uwagę dat.
I od tej listy możemy sobie odjąć kolejną listę,
czyli tą, gdzie właśnie mierzyliśmy tę listing właśnie z bookingu,
gdzie daty nam się zgadzały i wyciągamy list of listing.
Wiem, że jest to dosyć skomplikowany zapis, ale mam nadzieję, że go
rozumiesz i wiesz co się tutaj dzieje.
Najpierw mamy listę, która opiera się właśnie na mieście,
na guest number i dodatkowo na naszych filtrach, ale
nie bierze w ogóle pod uwagę dat.
Potem mamy drugą listę, gdzie tylko bierzemy pod uwagę daty
oraz właśnie to miasto I od jednej listy odejmujemy drugą i
powinniśmy uzyskać tylko te rezultaty, które chcemy wyświetlić użytkownikowi.
I zerknijmy.
4. Powinniśmy tutaj uzyskać 3 listing.
A właśnie się zgadzają.
Jak pamiętasz, ta główna lista zwracała nam 4, a druga lista zwracała nam 1.
Odejmujemy od 4. ten jeden listing.
I to są właśnie te listing, które właśnie tutaj należą do Nowego Jorku
i są wolne właśnie w tych terminach.
Mamy tutaj jeszcze liczbę gości.
Oczywiście te filtry też dalej nam tutaj działają.
Jeśli wybiorę sobie House, no to jak widzisz, znowu nam się to zawiesiło.
A więc w końcu nasza wyszukiwarka działa tak, jak powinna.
Zajęło nam to bardzo dużo czasu.
Jak widzisz, wymagało tutaj kilku różnych dziwnych trików,
ale niestety tak jak mówiłem, praca z datami w Babel potrafi być skomplikowana.
Natomiast jeżeli moja tłumaczenie w tej lekcji było dla Ciebie zbyt szybkie i mało
zrozumiałe, to po prostu postaraj się odtworzyć je sobie
jeszcze raz od początku.
Przeanalizować krok po kroku co ja tutaj zrobiłem i mam nadzieję, że w
końcu to wszystko zrozumiesz.
Ja w takim razie dziękuję Ci za uwagę w tej lekcji i do zobaczenia za moment.