# Rozcestník
- [Agenda správy majetku](#agenda-správy-majetku)
- [Funkcionalita](#funkcionalita)
  - [Správa majetku](#správa-majetku)
  - [Správa skladů](#správa-skladů)
  - [Inventarizace](#inventarizace)
  - [Rezervace položek](#rezervace-položek)
    - [Přehled rezervací/výpůjček](#přehled-rezervacívýpůjček)
    - [Vydané položky](#vydané-položky)
    - [Rezervace majetku](#rezervace-majetku)
- [Spuštění projektu (Visual Studio Code)](#spuštění-projektu-visual-studio-code)
  - [Požadavky](#požadavky)
  - [Spuštění projektu](#spuštění-projektu)
  - [Možné chyby během instalace či spouštění](#možné-chyby-během-instalace-či-spouštění)
    - [Nespustí se emulátor](#nespustí-se-emulátor)
    - [Spuštění `tns run <platform> --bundle` vyvolá chybu](#spuštění-tns-run-platform---bundle-vyvolá-chybu)


# Agenda správy majetku

Rozšíření Kapesního skautISu o agendu majetku proběhlo v rámci bakalářské práce Michaely Ostruszkové na FI MUNI na jaře 2020. 

Pro vývoj agendy, stejně jako zbytku aplikace, byl použit framework NativeScript společně s rámcem Angular. Díky tomu je aplikace dostupná jak pro Android, tak pro iOS.

<img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/menu-enabled.jpg" alt="Agenda dostupná pro správnou roli" width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/menu-disabled.jpg" alt="Pro ostatní role není agenda dostupná." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/main.jpg" alt="Rozcestník agendy majetku" width="250">

# Funkcionalita
Agenda je dostupná rolím vedoucí/admin a SKLADNÍK a je rozdělena do čtyř základních částí:
* správa majetku
* správa skladů
* inventarizace
* rezervace položek


## Správa majetku
Tato sekce zahrnuje přehled veškerého majetku jednotky. Dostupné vybavení je možné upravit, vyřadit, případně vydat do jiného skladu (na základě rezervace). Kromě práce se stávajícími položkami je také možné přidání nového vybavení.

<img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/seznam-majetku-s-vyrazenyma.jpg" alt="Seznam položek skladu." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/majetek-detail-vydano.jpg" alt="Detail položky." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/pridat_polozku_expand.jpg" alt="Přidání nové položky." width="250">

## Správa skladů
Druhá část agendy majetku umožňuje upravovat informace o skladech jednotky. V detailu skladu se nachází přehled všech položek, které patří uvedenému skladu.

<img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/sklad_filtr.jpg" alt="Přehled skladů." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/sklad-detail.jpg" alt="Detail skladu." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/upravit_sklad.jpg" alt="Upravit sklad." width="250">

## Inventarizace
Tato část poskytuje možnost provádění inventarizace. Pokud žádná neprobíhá, je možné vytvořit novou. Po výběru skladu jsou data načtena do lokální databáze, což umožňuje provádět inventuru offline. Samotnou inventarizaci je možné provádět skenováním QR nebo čárových kódů.

<img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/nova_inv.jpg" alt="Založení nové inventury." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/aktivni_inventura.jpg" alt="Výběr skladu pro inventarizování." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/inventory-modal.jpg" alt="Modální okno vysvětlující popis inventarizace." width="250">

<img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/inventarizace-neinventarizovane-s-popisem.jpg" alt="Neinventarizované položky." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/inventarizace-cekajici.jpg" alt="Inventarizované položky čekající na synchronizaci se serverem." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/inventarizace-jiz-inv.jpg" alt="Inventarizované položky." width="250">

## Rezervace položek
Poslední sekce agendy majetku je možnost rezervování položek a jejich následná správa. Tato část je rozdělena do tří podkategorií:

### Přehled rezervací/výpůjček
Zobrazuje všechny vytvořené rezervace (ze strany příjemce). Rezervace je možné upravit nebo zrušit (pouze v případě, že ještě nebyly potvrzeny). 

<img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/prehled_rezervaci_vypujcek.jpg" alt="Seznam rezervací z pohledu příjemce." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/detail_nepujcene.jpg" alt="Detail nepotvrzené rezervace." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/detail_rezervace.jpg" alt="Detail potvrzené rezervace." width="250">

### Vydané položky
Tato sekce slouží pro pronajímatele. Seskupuje odkazy na položky, které vypůjčil do jiných skladů.  

<img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/vydane_polozky.jpg" alt="Přehled vydaných položek." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/material-detail-lend.jpg" alt="Detail rezervace v detailu položky." width="250"> 

### Rezervace majetku
Stránka sloužící pro půjčování rezervovatelného majetku.

<img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/rezervovatelne.jpg" alt="Seznam rezervovatelných položek." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/reserve-filtr.jpg" alt="Filtrovaný seznam rezervovatelných položek." width="250">   <img src="https://github.com/skaut/SkautIS_mobile/wiki/images/majetek/vytvorit_rezervaci.jpg" alt="Vytvoření nové rezervace." width="250">

# Spuštění projektu (Visual Studio Code)
## Požadavky
Před spuštěním projektu na vlastním PC je potřeba mít splněné následující:
 1. Nainstalujte [Visual Studio Code](https://code.visualstudio.com/).
 2. Nainstalujte [Node.js](https://nodejs.org/en/download/).
 3. Nainstalujte NativeScript-CLI přes cmd (doporučuji spustit jako správce) příkazem `npm install -g nativescript` *(v případě práce na macOS se může objevit error - proto je lepší použít příkaz `sudo npm install -g nativescript`).*
 4. Nainstalujte potřebné komponenty:
 	1. **WINDOWS**
		- Otevřete příkazový řádek jako správce a spusťte příkaz 
		`@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://www.nativescript.org/setup/win'))"
`. 
Během instalace je potřeba povolit všechny žádosti v příkazovém řádku vepsáním 'a'.
 	2.  **MacOS**
		- Otevřete příkazový řádek jako správce a spusťte příkaz 
		`sudo ruby -e "$(curl -fsSL https://www.nativescript.org/setup/mac)"`
		- Pokud chcete spustit aplikaci v emulátoru pro android, je potřeba nainstalovat ještě [Android Studio](https://developer.android.com/studio).
 5. Spusťte příkaz `tns doctor`, který zkontroluje, zda instalace proběhla v pořádku. V případě problémů postupujte podle pokynů na [této stránce](https://docs.nativescript.org/angular/start/quick-setup#step-2-install-ios-and-android-requirements). 
 5. Restartujte počítač.
 
## Spuštění projektu
Jakmile máte nainstalováno vše potřebné, pokračujte takto:
1. Stáhněte si projekt a rozbalte jej.
2. Otevřete Visual Studio Code, v menu vyberte **File -> Open Folder** a vyberte složku **kapesni_skautis**.
3. Klikněte na záložku **Terminal -> New Terminal**.
4. V nově otevřeném terminálu spusťte příkaz `tns run android --bundle` nebo `tns run ios --bundle` (pouze v případě macOS).
5. Pokud vše proběhlo správně, měl by se spustit emulátor a po několika minutách instalace se v něm otevře aplikace Kapesní skautIS.
6. Pokud chcete projekt spustit na vlastním zařízení, je nutné postupovat takto:
	 - V mobilním zařízení povolit vývojářský režim.
	 - V **Nastavení -> Možnosti pro vývojáře** povolit **Ladění USB** a **Instalovat přes USB**
	 - Připojte telefon přes USB.
	 - Nemějte spuštěný žádný emulátor. 
	 - Spusťte příkaz  `tns run android --bundle`. 
	 - Během instalace je potřeba na mobilu potvrdit nainstalování aplikace.
   
 ## Možné chyby během instalace či spouštění

 ### Nespustí se emulátor
 je možné, že máte špatně nastavené proměnné systému. Zkontrolujte, jestli máte android SDK nainstalován ve stejné složce, jako systémovou proměnnou ANDROID_SDK (výchozí nastavení je **C:\Android\android-sdk**).

 ### Spuštění `tns run <platform> --bundle` vyvolá chybu
 `tns : File AppData\Roaming\npm\tns.ps1 cannot be loaded. The file AppData\Roaming\npm\tns.ps1 is not digitally signed.` 
 V tom případě spusťte PowerShell (jako správce) a spusťte příkaz `Set-ExecutionPolicy RemoteSigned`. Potvrďte vše příkazem 'a'.
 
