W tym samouczku dowiesz się jak można wstawić do sekcji zmienną ilość wierszy na podstawie prostej apki do planowania dyżurów, do której będą pobierane odpowiednie wiersze z liczbą dni dla danego miesiąca.
1. Lista
Stwórz listę o nazwie DNI, w której dodaj jedną kolumnę liczbową o nazwie DZIEN. W tej kolumnie wypisz po kolei liczby od 1 do 31. Z tej listy apka będzie pobierała liczbę dni dla odpowiedniego miesiąca.
2. Kalendarz z dyżurami
2.1
Stwórz nową apkę i dodaj w niej widżet - tabelę o nazwie Kalendarz. Nadaj kolumnom kolejno następujące nagłówki: Dzień, Dyżur, Miesiąc i Rok.
Zmień kolumnom typ:
Dzień i Miesiąc - typy liczba
Dyżur - typ przycisk wyboru
Ustaw kolumnę Dyżur na edytowalną, a kolumnom Miesiąc i Rok zmień widoczność na false.
Powiąż tabelę z listą DNI, a kolumnę Dzień powiąż z kolumną z listy jak powyżej.
W tej tabeli będzie się pojawiała odpowiednia liczba dni dla danego miesiąca, a w kolumnie Dyżur użytkownik będzie mógł zaznaczyć, w których dniach ma dyżur.
2.2
Stwórz arkusz kalkulacyjny o nazwie Miesiac z dwoma komórkami.
W pierwszej komórce ustaw:
-typ liczba
-edytowalność komórki
-wpisz formułę =month(today()), która będzie zwracała numer miesiąca z dzisiejszej daty
W drugiej komórce ustaw:
- typ liczba
-wpisz formułę =if(MIESIAC.A1=4||MIESIAC.A1=6||MIESIAC.A1=9||MIESIAC.A1=11,30,MIESIAC.A1=2&&number(Date.A2)%4=0,29,MIESIAC.A1=2&&number(Date.A2)%4!=0,28,31), która będzie zwracała ilość dni w miesiącu wpisanym w komórce powyżej.
Arkusz Data zostanie stworzony w następnym kroku, a komórka Date.a2 będzie zawierała rok wybrany przez użytkownika.
Ustaw widoczność tej sekcji na false.
2.3
Stwórz pomocniczy arkusz kalkulacyjny o nazwie Miesiace, w jego pierwszej kolumnie wypisz po kolei wszystkie nazwy miesięcy. Jego widoczność ustaw na false.
Stwórz nowy arkusz o nazwie Date z dwiema komórkami. W pierwszej komórce wpisz formułę:
=nth(Miesiace.A1:A12,MIESIAC.A1), która będzie zwracała nazwę miesiąca o numerze z pierwszej komórki arkusza Miesiac.
Drugą komórkę ustaw na edytowalną i zmień jej typ na - listę rozwijaną. W elementach listy rozwijanej wpisz =array('2021','2022','2023','2024','2025'), tak jak powyżej.
Wpisz w tą komórkę formułę: =text(year(today())), która będzie zwracała rok z dzisiejszej daty w formacie tekstowym. Dzięki temu domyślnie w komórce będzie się pojawiał aktualny rok, a użytkownik będzie mógł go zmienić wybierając rok z listy rozwijanej.
2.4
Stwórz dwa przyciski i ustaw je po obu stronach arkusza Data, a w ich nagłówkach wpisz strzałki w odpowiednich kierunkach jak poniżej.
Na przyciskach dodaj akcję "Ustaw wartość w komórce". Jako adres komórki ustaw Miesiac.a1 dla obu przycisków. Jako wartość dla przycisku ze strzałką w lewo wpisz formułę: =if(MIESIAC.A1=1,12,MIESIAC.A1-1), a ze strzałką w prawo - formułę: =if(MIESIAC.A1=12,1,MIESIAC.A1+1).
Dzięki temu użytkownik będzie mógł zmieniać miesiąc przy użyciu strzałek.
2.5
Wróć z powrotem do tabeli Kalendarz. W filtrze dopisz do formuły lookup warunek: DZIEN<=MIESIAC.A2.
Dzięki temu w tabeli będą się pojawiać numery dni, które będą mniejsze lub równe liczbie dni w danym miesiącu.
2.6
W kolumnach Miesiąc i Rok wpisz kolejno formuły: =MIESIAC.A1 i =DATe.A2. W tych komórkach będą się pojawiać odpowiednie miesiące i lata co będzie potrzebne przy późniejszym zapisywaniu danych.
3. Zapisywanie dyżurów.
3.1
Otwórz designera i stwórz w nim nową tabelę o nazwie REJESTR_DYZUROW. Nazwij kolumny tabeli kolejno: Dzien, Dyzur, Miesiac i Rok.
Ustaw kolumnom typy:
-Dzien i Miesiac - number,
-Dyzur - Boolean.
Zaznacz klucz dla kolumn: Dzien, Miesiac i Rok, dzięki temu w tabeli będzie mógł być tylko jeden wiersz dla jednej daty. Zapisz tabelę.
3.2
Wróć do designera apki i do tabeli Kalendarz. W odpowiednich kolumnach uzupełnij pole danych, wpisując nazwę tabeli REJESTR_DYZUROW i po kropce nazwę odpowiedniej kolumny. Na przykład w kolumnie Dzień należy wpisać: REJESTR_DYZUROW.DZIEN. Będzie to potrzebne do następnego kroku.
3.3
Stwórz widżet akcji workflow i przejdź do zakładki workflow. Stwórz akcję ze stanu startowego do samego siebie o nazwie Zapisz. Ustaw na akcji krok "Zapisz do bazy", jako sekcję wpisz Kalendarz, a jako listę/tabelę REJESTR_DYZUROW. Akcja zapisuje do podanej tabeli dane z kolumn, w których odpowiednio uzupełnione jest pole danych.
Po workflow ustaw akcję "Odśwież stronę".
3.4
Stwórz nową tabelę i nazwij ją Dyzury. Zmień nagłówki tak jak w tabeli Kalendarz i powiąż tabelę z tabelą REJESTR_DYZUROW, a odpowiednie kolumny powiąż ze sobą tak jak poniżej. Ustaw kolumnę Dyżur na edytowalną. Ustaw kolumny Miesiąc i Rok na niewidoczne.
We właściwościach tabeli w filtrze dopisz do lookupa warunek: MIESIAC=MIESIAC.A1&&ROK=DATA.A2, który sprawi, że w tabeli będą się pojawiać dane dla wybranego przez użytkownika miesiąca i roku.
Będzie to tabela, w której po zapisaniu będą się pojawiać zaznaczone dni, i w której będzie można dokonać zmian.
3.5
Stwórz arkusz o nazwie Pomocnicza z jedną komórką. Powiąż arkusz z tabelą REJESTR_DYZUROW, a tą jedną komórkę z kolumną DZIEN. W filtrze dopisz do lookupa taki sam warunek jak w tabeli Dyzury.
Ustaw jej widoczność na =false.
W zależności czy tabela REJESTR_DYZUROW nie ma wierszy dla wybranego miesiąca i roku, ta komórka będzie pusta lub nie.
3.6
W widoczności tabel Kalendarz i Dyzury wpisz kolejno formuły:
=if(isempty(POMOCNICZA.A1),true,false) - tabela Kalendarz
=if(isempty(POMOCNICZA.A1),false,true). - tabela Dyzury
Dzięki temu, na początku będzie można wybrać dni na dyżur w tabeli Kalendarz, a po zapisaniu będzie można te dyżury zmienić w tabeli Dyzury.
3.7
Przejdź do zakładki Workflow i dodaj drugą akcję zapisz do bazy na akcji, w której jako sekcję wpisz DYZURY.
4. Testy
Na ekranie użytkownik może z listy wybrać rok, a strzałkami zmieniać miesiąc. Liczba wierszy w tabeli powinna się zmieniać zgodnie z ilością dni w danym miesiącu, tak więc na przykład we wrześniu powinno być 30 wierszy. Wybierz parę dni, w których zaznacz dyżur i zapisz.
Powinien pojawić się komunikat "Akcja wykonana". Zmień zaznaczone pola i ponownie zapisz. W tabeli powinny się pojawić poprawione wiersze.
0 Komentarze