|
1 | 1 | # planeo
|
2 | 2 |
|
3 |
| -// TODO |
| 3 | +Narzędzie, które pozwala dodać Twój plan zajęć do Kalendarza Google szybciej i prościej, niż gdyby robić to ręcznie. |
4 | 4 |
|
5 |
| -_Read this in other languages: [English](README.md)_ |
| 5 | +Możesz przetestować je [tutaj](https://srflp.github.io/planeo/). |
| 6 | + |
| 7 | +Formularz jest dostosowany obecnie do planów zajęć Wydziału Intformatyki i Telekomunikacji Politechniki Poznańskiej. |
| 8 | + |
| 9 | +_Read this in other languages: [English](README.md)_ |
| 10 | + |
| 11 | +## O projekcie |
| 12 | + |
| 13 | +Głównym celem tego projektu jest ułatwienie studentom dodawania swoich planów do Kalendarza Google. |
| 14 | + |
| 15 | +### Dlaczego nie dodawać planu ręcznie? |
| 16 | + |
| 17 | +planeo znacząco upraszcza proces dodawania planu do Kalendarza, robienie tego ręcznie jest bardzo czasochłonne. |
| 18 | + |
| 19 | +### Co ten program tak właściwie robi? |
| 20 | + |
| 21 | +Po wypełnieniu formularza i wysłaniu go, planeo przetwarza wpisane dane i przekazuje je do API Kalendarza Google. |
| 22 | +To tak w bardzo dużym uproszczeniu. W rzeczywistości, proces po kliknięciu „Dodaj” wygląda tak: |
| 23 | +- dodawane są całodniowe wydarzenia znakujące początki i końce semestru |
| 24 | +- w poniedziałek każdego tygodnia semestru dodawane jest całodniowe wydarzenie oznaczające, czy dany tydzień jest tygodniem parzystym, czy nieparzystym (na podstawie informacji z formularza, czy pierwszy tydzień jest parzysty/nieparzysty) |
| 25 | +- wyszukiwana jest pierwsza data wystąpienia danego zajęcia w semestrze (uwzględniając parzystości tygodni i występujące święta, podczas których zajęć nie ma), a następnie dodawane jest cykliczne wydarzenie (ang. recurrent event) z tą datą jako datą początku, oraz datą końca semestru jako datę końca cyklicznego wydarzenia. Cykliczne wydarzenia mają częstotliwość określoną na 1 tydzień (przy ustawieniu "wszystkie tygodnie") lub 2 tygodnie (przy wybraniu opcji "parzyste"/"nieparzyste"). Do informacji o cykliczności wydarzenia dołączane są wyjątki, czyli wszystkie daty w których zajęcia się nie odbędą (święta). |
| 26 | +- jako całodniowe wydarzenia dodawane są dni wolne od zajęć dydaktycznych (święta) |
| 27 | + |
| 28 | +## Detale techniczne |
| 29 | +Cały projekt został napisany w czystym JavaScripcie, bez użycia żadnych dużych JSowych frameworków. |
| 30 | + |
| 31 | +### Zależności |
| 32 | +#### Development side |
| 33 | +- [babel](https://github.com/babel/babel) - transpiluje JSa w standardzie ES6 do standardu ES5 który jest obsługiwany przez zdecydowaną większość przeglądarek |
| 34 | +- [webpack](https://github.com/webpack/webpack) - uruchamia babela i bundluje kod w pojedynczy plik bundle.js |
| 35 | + |
| 36 | +#### Production side |
| 37 | +- [Bootstrap](https://github.com/twbs/bootstrap) - interfejs użytkownika (sam CSS) |
| 38 | +- [flatpickr](https://github.com/flatpickr/flatpickr) - kalendarzyki do wyboru daty |
| 39 | +- [loadjs](https://github.com/muicss/loadjs) - do wczytywania Google API Client Library bezpośrednio z poziomu JavaScriptu |
| 40 | +- [dayjs](https://github.com/iamkun/dayjs) - lekka biblioteka do wygodnego operowania na datach |
| 41 | + |
| 42 | +## Instalacja |
| 43 | +Jeśli chcesz uruchomić ten projekt na swoim komputerze: |
| 44 | +1. sklonuj repozytorium |
| 45 | +2. uruchom `npm install` będąc w katalogu projekty |
| 46 | +3. wejdź do folderu `dist` i uruchom z jego poziomu serwer HTTP, np. |
| 47 | + ``` |
| 48 | + $ python3 -m http.server 8000 |
| 49 | + ``` |
| 50 | +4. uruchom webpacka: |
| 51 | + ``` |
| 52 | + npx webpack |
| 53 | + ``` |
| 54 | + Automatycznie będzie on nadzorował zmiany w projekcie i auktualizował plik bundle.js z każdą zmianą. |
| 55 | + |
| 56 | +### Inne |
| 57 | +Dodatkowo możesz nadać lokalnemu adresowi strony adres publiczny używając ngroka (aby np. przetestować apkę na telefonie): |
| 58 | +``` |
| 59 | +./ngrok http localhost:8000 |
| 60 | +``` |
| 61 | +Aktualizacja brancha gh-pages: |
| 62 | +``` |
| 63 | +git subtree push --prefix dist origin gh-pages |
| 64 | +``` |
0 commit comments