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?
W tej lekcji zajmiemy się odpowiednim wyświetlaniem zablokowanych pobytów.
Natomiast aby to zrobić będziemy musieli oczywiście w pierwszej kolejności
skorzystać z Dashboard u gościa, ponieważ to tylko on w naszej aplikacji
będzie mógł właśnie takie pobyty sobie blokować.
A potem te działania, które wykonamy w tej lekcji odpowiednio wzorujemy
również na koncie hosta.
A więc nie przedłużamy.
Zaloguj się jako demo Guest.
Jesteśmy na stronie, a w zasadzie w zakładce Booking bookingu i
zerknijmy co my tutaj mamy.
Na razie wyświetlamy tylko statyczne dane.
Nic tu jeszcze nie zmieniałem.
Natomiast zerknijmy czy nasz data tag booking posiada wszystkie
informacje, które tutaj wyświetlamy.
To jesteśmy w stanie wyciągnąć z listingu podobne to i to.
Te wartości też mamy tam date range, więc będziemy w stanie
sobie wyciągnąć liczbę nocy.
Natomiast nie pamiętam, żebyśmy podawali liczbę gości, którą użytkownik wybrał,
a więc może właśnie teraz się o to zatroszczy.
Czyli wracamy sobie do edytora Data type do bookingu
i dodajemy tu jeszcze Guest number i oczywiście będzie tu nasz os.
Listing OS.
Listing Numbers.
Taki tips to pole.
Teraz mamy chyba już wszystkie potrzebne informacje.
Zerknijmy.
Daty będziemy w stanie sobie wyciągnąć z bookingu, a to też oczywiście
odpowiednio zadbamy.
Natomiast to co ja tu jeszcze zrobiłem dla tego elementu całego elementu
guest booking z repo.
Teraz w nim nie jestem to dodałem tutaj już 2 staty.
Pokazuje Ci jak one działają.
Pierwsze to standardowy date Sort jest nowy i dostawałem dokładnie to samo co
zrobiłem dla tej grupy w poprzedniej lekcji.
A więc dodałem identyczny workflow, identyczne condition ale itd.
Więc jeżeli chcesz sobie to teraz odwzorować to zatrzymaj lekcje w tym
momencie i po prostu dodaj w tym całym element dokładnie te same
style, akcje i workflow.
OK, mam nadzieję, że to sobie już wdrożyłem.
Dodatkowym startem jest start o nazwie Current View.
Tym razem ustawiłem to po prostu na zwykły tekst i wartość tutaj default to app
coming, czyli właśnie ta pierwsza, którą będziemy wyświetlać.
Oczywiście mógłbyś tutaj dodać odpowiedni option set, natomiast moim zdaniem jest
to delikatny przerost formy nad treścią.
Korzystamy z tego tylko i wyłącznie w tym miejscu, a potem taki element powielamy
dla naszego hosta, więc nie ma sensu zaśmiecać naszej
bazy dodatkowym option setem.
Tutaj mam standardowe condition, ale nie ma tutaj nic trudnego.
Po prostu jeśli ten skręt jest równy AB Coming to ustalam właśnie takie style.
Tutaj będzie to active, tutaj będzie to Ended.
Oczywiście kliknięcie w taki button.
Jak się domyślasz tutaj mam folder views będzie ustawiał odpowiednie value.
Tak samo tutaj dla dat.
Dokładnie to samo co robiliśmy wcześniej.
Dodałem tutaj tylko zamykanie tej grupy focus fokus po wybraniu
odpowiedniej wartości.
Wróćmy więc do designu.
Ja dam Ci chwilkę, żebyś sobie teraz nadzorował ten drugi custom state dodał
condition, ale ze stylami, odpowiednie workflow i zaraz przystępujemy
do dalszej pracy.
OK, mam nadzieję, że to już jest gotowe.
Więc teraz będziemy musieli zadbać tutaj o wyświetlanie,
jak się domyślasz odpowiednich booking ów.
Mamy tutaj booking z repeat group i wyświetlamy tu oczywiście złe elementy,
a w zasadzie zły Data type to nie jest listing.
Nas interesuje teraz po prostu booking.
Tutaj wybierzmy sobie Search for.
King, gdzie guest jest równa.
Karencja.
Taki string pozwoli nam teraz wyświetlać tylko oczywiście te booking, które
zablokował nasz zalogowany gość, czyli zalogowany użytkownik.
Natomiast zerknijmy tutaj dalej do tej grupy.
Mamy tutaj booking kart i to oczywiście moglibyśmy zamienić sobie na element.
Ja się zajmę tym później.
Natomiast teraz zastosujmy to właśnie pod nasz booking.
Czyli wybieramy sobie tutaj odpowiedni Data type Current Self Booking.
I teraz przystąpimy do dalszego działania.
Mamy, mamy, mamy image.
Musimy to odpowiednio dostosować.
To będzie to oczywiście Parent Group Booking.
Z tego odnosimy się do listingu, a z listingu wyciągamy Image Main File
System, czyli Parent group Booking. is.
Przechodzimy do listingu i z tego wyciągamy image main.
Mam nadzieję, że już rozumiesz, jak te właśnie zagnieżdżone
wartości tutaj działają.
A więc podlinkowanie do listingu możemy przejść do konkretnych jego kolumn.
Analogicznie będziemy tutaj właśnie odnosić się do tych pozostałych elementów.
Tu mamy tekst App Coming, który wyświetlamy sobie w
mniejszych rozdzielczościach.
Tym też się zajmiemy.
Natomiast pierwszej kolejności jeszcze tutaj dostosujemy to wszystko.
Same tutaj mamy, mamy top OK, tu znów będzie booking Parent group booking.
I tutaj mieliśmy chyba typowe place, czyli Parent booking.
Listing typowe place.
ABA Spróbujmy odwzorować dokładnie to co mamy na kartach listingu.
Czyli wydaje mi się, że tam mamy property type.
Jeszcze sobie zerknę, nie pamiętam jak to dokładnie ustawiliśmy.
Mamy najpierw property type, a potem typeof place.
Places, czyli w zasadzie mogę sobie to tutaj.
OK. Tutaj mamy listing, to nie ma co kopiować.
Dobra, wracamy.
Jest booking res.
Czyli mamy tak Listing property type display OK, last dwie spacje alt 8, żeby
wstawić kropkę, kolejne dwie spacje.
Insert Dynamic data. Kopiuję sobie to.
I jak będzie typeof place?
To będzie ta część. Teraz musimy sobie powyciągać tę datę.
To jak się domyślasz jesteśmy w stanie wyciągnąć z tego pola dive
range dla naszego bookingu.
Zaznaczmy tą pierwszą wartość.
Odnosimy się do Parent Group Booking Date Start czyli początek
i tutaj wybieramy sobie w jaki sposób to ma być sformatowane.
Tym razem mamy tutaj już gotowe.
A może ten ciąg 13 2000 jak to mieliśmy zapisane ok.
Miesiąc, Rok?
To wybierzmy sobie tutaj custom i zróbmy to w ten sposób.
A razy 2 jako data, potem 3 razy M jako skrócona wartość
miesiąca i potem 4 razy Y żeby uzyskać pełen rok.
OK, kopiujemy to.
zaznaczamy tą drugą datę, zamieniamy ją i wklejamy to expression.
I tym razem odnosimy się do NT.
Kolejno mamy tak.
Tutaj mamy nazwę naszego listingu, czyli Listing name.
Tutaj, Co my chcemy tutaj wyświetlać?
Wydaje mi się, że tutaj możemy wyświetlić hosta, czyli dodajemy tutaj oraz host.
I tu będzie oczywiście host i jego first name spacja.
Kopiujemy je sobie to Expression wstawiamy tutaj i odnosimy się do Last.
Kolejna mamy cena.
A więc będzie to ok.
Tutaj mamy grupę. Zerknijmy.
Tutaj musimy odpowiednio pozmieniać w content, nie na listing tylko
oczywiście na booking i tak samo tutaj.
Parent group booking i teraz wstawiać właściwe wartości.
Czyli mamy booking, mamy tutaj listing i z tego wybieramy sobie
price bo jest to cena za jedną noc.
Oczywiście bez karencji.
2 miejsca i mamy total form.
OK, przepraszam Cię, to nie jest cena za noc tylko cena całkowita.
OK, czyli to będzie booking total price i to dopiero formatka z.
Tutaj tylko to.
Czyli Parent group Booking Total Price i sformatowana właśnie tutaj jako karencji.
I teraz ten tekst Total form liczba nocy.
Mamy nadzieję, że się domyślasz jak to można zrobić.
Odnosimy się do Parent Rep Booking tej rangi i tutaj wyciągnijmy z tego.
Liczbę dni.
Czy mamy tutaj taką możliwość Bezpośrednio?
Chyba nie.
A więc musimy zastosować bardzo podobne podejście, jakie robiliśmy
na stronie listingu, czyli wybieramy datę końcową i od niej odejmujemy datę
rozpoczęcia takiego pobytu.
I to dopiero formatuje jako liczbę dni.
To nam da właśnie tutaj liczbę dni bądź liczbę nocy.
I tutaj jeszcze wyciągamy wartość Numbers naszego bookingu, czyli tą, którą
dopiero co dodaliśmy w naszym Data Type.
I oczywiście to będzie display.
Żeby nam tu babol nie świecił na czerwono.
Wydaje mi się, że tutaj mamy już wszystko dostosowane.
Oczywiście potem tak jak mówiłem zamienię sobie ten element na element
i Tobie też to radzę zrobić.
Natomiast teraz odświeżamy.
Mamy puste z tego powodu, że nie mamy żadnych bookingu, a
więc musimy przynajmniej sobie kilka stworzyć.
W tym celu może klikniemy tutaj.
Przejdźmy na stronę i zerknijmy, czy tam mamy listę bookingu,
a w niej listę bookingu.
Oczywiście lista listing ów na razie nie.
A więc wracamy na stronę Search. ach.
Na razie po prostu przekażmy wszystkie listing zamiast naszego setu.
Nie bawimy się w żadne contains I teraz.
Teraz powinna nam się tutaj listingu odpowiednio wyświetlać,
aby możemy sobie zabukować jakieś pobyty.
Zacznijmy może od Wilna. To z rana.
OK.
I jeszcze tak musimy dodać gest do naszego workflow, ponieważ tak jak
pamiętasz, do tej pory tego nie opisywaliśmy.
Czyli znów czeka nas powrót na stronę, tym razem listingu.
Przechodzimy do Workflow.
Tutaj mamy rezerw i tu, gdzie tworzymy nowy booking.
Oczywiście dodajemy Get Number i będzie to co my tu mamy jest drop down.
OK, tylko wybierzmy to odpowiednie.
Czyli dodajmy tutaj a site na samym początku.
I teraz to wartość, którą tutaj wybierze nas.
Gość Musimy oczywiście dopisać do naszego bookingu.
Czyli side test value.
To jest jedyna poprawka jaką musieliśmy tutaj dodać do naszego workflow, czyli
właśnie zapisywanie wartości do tej kolumny.
Skoro to mamy gotowe, to jeszcze odświeżamy sobie tutaj ten widok.
OK, ustawiły się tutaj jakieś daty.
Tak jak pamiętasz Pablo robi to dla nas z automatu, ponieważ dodaliśmy
odpowiedni workflow.
W moim przypadku dzień jutrzejszy to 14 czerwca tego nagrywania.
Natomiast ja chciałbym dodać te daty jakoś trochę na przód, jeszcze bardziej,
żeby się to lepiej wyświetlało, powiedzmy, że od 24, a właśnie 24 do 30 czerwca.
Dodajmy tutaj mamy wyboru tylko jednego gościa.
OK, mamy tutaj login SID, jesteśmy zalogowani, więc zerkniemy co się stanie.
To taki booking nam się utworzył, a wygląda na to, że się utworzył.
Musimy jeszcze zerknąć właśnie na ten button, czy tam się wszystko
odpowiednio wyświetla?
Możemy sobie to zamknąć.
Tutaj odświeżamy.
Jeden booking dla naszego tutaj gościa powinien się dodać.
Zerknijmy.
Wracamy do Dashboard.
OK, mamy Willa Tosca na to się zgadza.
Natomiast mamy tutaj tak Booking.
Jest to App coming, czyli nadchodzące aktywne.
Czyli data dzisiejsza powinna wypadać właśnie w tym przedziale i zakończone.
Czyli daty powinny być wcześniejsze od daty bieżącej.
Aby to zrobić wracamy na stronę listingu.
Jeszcze tylko zerknijmy na ten button, bo mi się tutaj to nie podoba.
Mamy. Aha, user is locked out.
Powinno być.
Na odwrót. User is like teen.
Czyli jeżeli jest zalogowany to chcemy mu wyświetlić TextBox, a
jeżeli nie jest to login to profit.
Przepraszam Cię za tą pomyłkę.
Wystarczyło odwrócić ten warunek.
OK, Natomiast jeżeli przejdę teraz do tego elementu Side date r.
date, to jak pamiętasz ustawiliśmy tutaj minimalną datę, od której
możemy rozpocząć booking.
I to będzie trochę blokowało teraz pracę.
A więc to co chcę zrobić to skopiować to Expression i chwilowo się
go pozbyć tak żeby mógł właśnie utworzyć bieżący.
Taki booking i booking przeszły w tym celu.
Wracam sobie najpierw do Dashboard.
Potem na stronę Search.
I wybierzmy.
same. Tutaj mamy mamy In Forest.
Niech będzie ten.
Wybierzmy przedział.
Może od pierwszego do 30.
To nam wskoczy jako bieżący.
Dodajmy tutaj dwóch gości i kliknie imię. Puknął.
To nam powinno stworzyć drugi booking. OK?
I potrzebujemy jeszcze jakiegoś, który się zakończył.
A więc zamykam i tym razem może ten listing.
I zmieńmy to na jakiś wcześniejszy miesiąc, może właśnie na maj.
3 gości.
Klikam Book. puknął.
I ok.
Mamy jakieś 3 przykładowe bookingu, a więc mogę wrócić na dashboard.
I to się zgadza.
3 zablokowane pobyty pojawiły się w naszym Dashboard ie, a my musimy teraz przede
wszystkim dodać tutaj to sortowanie i dodać opcję wyświetlania tych
map Coming active oraz ended.
A więc to co robimy to wracamy się domyślasz do edytora, przechodzimy do gest
tutaj Booking here.
Tutaj mamy to workflow już dodane, więc musimy się teraz odnieść
do tego w naszej grupie.
Spróbujmy kliknąć tutaj, aby nam już pokaże od razu booking.
G.
A więc to co robimy, to zastanówmy się, co w zasadzie chcemy zrobić.
Domyślnie mamy zaznaczone AP coming, czyli takie pobyty, które dopiero nadejdą.
A więc tutaj dodajmy sobie dodatkowy oczywiście const train.
Gdzie?
Powiedzmy, że tak Daj treningowe start date.
Co my tu mamy?
Spróbujmy datę, rangę i.
Spróbujmy tutaj Current datetime.
OK.
OK, takie rozwiązanie się tutaj nie sprawdzi.
Nie mogę się tutaj niestety odnieść do DIY i wyciągnąć sobie z tego start date.
Nie mamy tutaj takich opcji.
Natomiast jeżeli odniosę się tego w ten sposób, to niestety znów
Babel mi krzyczy na czerwono.
A więc jeżeli nie jesteś wstanie ustawić constans w tym miejscu,
te opcje są tutaj za bardzo ograniczone.
To tak jak już Ci mówiłem nieco większe zakres takich opcji mamy
poprzez tutaj filtrację.
Czyli wyszukujemy sobie wszystkich bookingu, które należą do danego gościa
i następnie je sobie filtrujemy, czyli wybieramy Thread i tu możemy
dodać coś co się nazywa Advanced train.
Ja chcę ustawić to w ten sposób, że current date.
Czyli data dzisiejsza jest mniejsza niż Disk Booking Day Train Ich start date.
Czyli jeżeli dzisiaj mamy pierwszego czerwca to chcę wyświetlać tylko te
wyniki, gdzie Date train daje właśnie ten start?
Czyli rozpoczęcie pobytu będzie późniejsze, czyli np.
drugiego czerwca. Mam nadzieję, że to jest jasne.
Jest to mega prosty warunek.
Czyli Karen Date Time jest mniejsza niż kalendarze start.
To tam zadziała tutaj właśnie domyślnie, czyli dla tego stanu AP coming.
A teraz właśnie dla tych stanów musimy sobie dodać nowe conditions, ale
na podstawie właśnie takich conditions, czyli zmieniać datę source.
Czyli kopiujemy sobie ten Expression Booking Scripting Group.
Przechodzimy do Condition.
Jaki to będzie warunek?
Odnoszę się do Booking and View.
Jeśli on jest tutaj active muszę to wpisać z palca.
To teraz możemy sobie zmienić Data Source i tą wartość skopiować.
skopiowana, czyli tą, którą sobie tutaj skopiowałem, tu ją teraz
wklejam i tylko zmieniamy filtr.
Czyli tak current time musi być większe bądź równe.
Mamy tutaj chyba większe bądź równe a nic mamy większe.
Od daty rozpoczęcia oraz Advance current DateTime.
Musi być mniejsze od daty zakończenia takiego pobytu.
Czyli łapać się gdzieś w tym przedziale.
Mam nadzieję, że ten warunek też jest dla Ciebie tutaj jasny.
Czyli dzisiejsza data musi być większa od daty rozpoczęcia oraz
mniejsza od daty zakończenia.
Wtedy złapiemy się właśnie gdzieś w ten przedział.
Teraz możemy sobie skopiować taki condition all.
Wklejamy.
Odnosimy się do tutaj.
statu o nazwie ended, bo taki właśnie mamy tutaj po kliknięciu w ten button.
I tutaj zmieniamy znów filtry.
Tym razem Car and date times musi być większa od daty rozpoczęcia.
Powinniśmy mieć już tutaj te wszystkie filtry?
Zerknijmy.
Tu mamy mniejsza datę rozpoczęcia.
Tu mamy przedział między datą rozpoczęcia i zakończenia,
a tutaj mamy te, które właśnie już się zakończyły.
Czyli dzisiejsza data jest większa od daty, przepraszam, nie rozpoczęcia,
tylko oczywiście zakończenia takiego pobytu.
Jeżeli dzisiaj mamy pierwszy czerwca, powiedzmy, to chcemy
wyświetlać wszystkie te, które przed tym pierwszym czerwca się zakończyły.
OK.
Skoro te filtry mamy gotowe, to jeszcze tutaj tylko dodajmy sortowanie
rozpoczniemy tutaj.
Może niestety nie mamy możliwości dobrania się do tych dat, ale
wybierzmy sobie created date tak jak zrobiliśmy to wcześniej.
Odnosimy się do naszego ref.
Element dostaje tutaj status date sort.
Ja sobie to skopiuje i dodam tutaj wszędzie.
I tutaj również.
I ok, zerknijmy czy to teraz zadziała tak, jak działać powinno.
Mamy AP Coming.
OK, zgadza się.
Wyświetla się tylko jedna.
Tutaj booking, który rozpoczyna się 24 czerwca.
W moim przypadku dzień dzisiejszy to 13 czerwca, więc się zgadza.
Wybierzmy sobie Active ok.
13 czerwca zawiera się między pierwszym a 30, więc to też się zgadza
i zakończone też się zgadza.
Tutaj pojawił się booking, gdzie ta rezerwacja już tutaj
miała miejsca od 1 do 13 maja.
Sortowanie po dacie też powinno działać.
Tutaj niestety tego nie zauważymy, bo mamy tylko po jednym, ale wierz mi na
słowo, że to też będzie działało.
A więc te booking są już tutaj gotowe i to, co będziemy musieli teraz zrobić, to
przede wszystkim, tak jak mówiłem, zamienić to na element,
wklei to sobie do tego elementu.
Natomiast potem cały ten element, gest booking razem będziemy chcieli
odzwierciedlić również na koncie hosta.
No i tutaj masz dwa wyjścia.
Możesz go sobie po prostu skopiować, inaczej nazwać i tam oczywiście tutaj
tylko dla tej repeat grupy zmienić ten podstawowy warunek albo dać go bardziej.
Zachęcam spróbować jeszcze raz właśnie odwzorować sobie to wszystko teraz samemu
po obejrzeniu tej lekcji i po prostu ręcznie poprawiać ten element
właśnie na koncie hosta.
Ja zrobię to między lekcjami, aby w kolejnej lekcji.
Z kolei tutaj dla konta hosta dodamy jeszcze prostą wyszukiwarkę.
A więc teraz dziękuję Ci za uwagę i widzimy się już za moment.