# Document Components
## Typowy format dokumentu
```html
UMOWA NR ………….o realizację Inicjatywy zleconego w ramach Programu NOWEFIO - zachowując historię społecznościUstep 1
Punkt 1
Podpunkt sfsdfdfPodpunktPunkt 2Ustep 2
Punkt 1Punkt 2 ....
```
wygeneruje
```
§ 1
Obowiązki i uprawnienia informacyjne
1. Ustep 1
1) Punkt 1
a) Podpunkt sfsdfdf
b) Podpunkt
2) Punkt 2
2. Ustęp 2
1) Punkt 1
2) Punkt 2
§ 2
Zakres umowy
```
# Tagi pdstawowe
## ~~``~~
Nadrzędny element dokumentu
- `start` - od jakiego numeru numerować paragrafy, domyśnie jeden
- `watermark` - tresć znaku wodnego
- `settings` - ustawienia dla dokumentu (można je zmieniać w dokumencie przez `w-settings` lub `w-section`)
- `justify` - czy justować tekst w paragrafach
- `lang` - język dokumentu (ma wpływ na np. nazwy miesięcy, formatowanie liczb), domyślnie `pl`
- `dateFormat` - okresla domyslny format daty dla tagu `w-date`, domyślnie wynika z języka
- `inline` - czy numery paragrafów i ich tytuły mają być generowane w jednej lini
- `level1` - format numerowania ustępów, domyślnie `1.`
- `level2` - format numerowania punktów, domyślnie `1)`
- `level3` - format numerowania podpunktów, domyślnie `a)`
- `unordered` - format numerowania list `w-ul`, domyślnie `*`
- `moneySpaces` - wszystkie kwoty wyswietla z sepearatorem tysięczny, (zależnym od języka)
- `currency` - automatycznie dodaje walutę do formatownych kwot, np. `zł`
- `colors` - definicja własnych kolorów których potem mozna używać np. jako tło komórki np. `"{'td1': 'yellow'}"`
- `bg` - skrót do `colors.bg`, tło dla komórek z parametrem `bg`
- `fg` - skrót do `colors.fg`, kolor czcionki dla elementów z parametrem `fg`
- `fontFamily` - nazwa czcionki, domyśl;nie Arial
- `fontSize` - rozwmiar czcionki, domyslnie 9
- `dataPath` - generuje `data-path` dla elementów wynikających z jSchema
- `class` - klasy dopisywane automatycznie do elelemtnów html
- można zdefiniować własne z prefiksem `$` czyli np. `$bold: 'text-bold'` i potem użyć ich w parametrze `class` elementu: `class="$bold"`
- `showFooters` - czy generować przypisy, domyślnie `true`
## `` - od wersji 0.2.0
Sekcja dokumentu, może mieć inne nagłówki i stopki oraz rozmiar i orientację
- `landscape` - czy orientacja pozioma
- `format` - np. `a5`, domyślnie jest `a4`
- `margin-right`, `margin-left`, `margin-top`, `margin-bottom` - marginesy, można podać jednostkę np. `1.5cm`
- `settings` - nadpisanie ustawień z dokumentu
## ``
Element określający paragraf umowy
parametry
- `title` - tytuł paragrafu
- `name` - nazwa paragrafu, przydatna gdy trzeba pobrać wygenerowany numer (gdy brak nazwy mona to zrobić po tytule)
- `number` - można wymusić numer, domyślnie generuje się automatycznie
## ``
Element określający blok tekstu
- `right` - wyrównanie tekstu do prawej
- `left` - wyrównanie tekstu do lewej
- `center` - wyśrodkowanie
- `schema` - model z jSchema
```html
To jtest blok tekstu wyrównany do prawej
```
## ``
Element określający linię tekstu
```html
Witkac sp. z o.o.Słupsk, Sienkiewicza 5aNIP: 234234234
```
## `` / ``
Listy numerowane
## `` / ``
Listy nienumerowane
## ``
Pozwala umieścić przypis w tekście, domyślnie generowany jako indeks górny, treśc przypisu nie jest generowana
parametry:
- `number` - numer przypisu
```html
To jest wyjaśnienie przypisu
```
## ``
Generuje przypisy wygenerowane tagami `w-footnote`
```html
```
da taki efekt
```
-----------------------------
1) To jest wyjaśnienie przypisu
```
# ``
tag grafiki
parametry:
- `height` - wysokosc genrowanej grafiki
- `src` - dane lub adres url grafiki, lepiej dane w formacie `data:image/jpeg;base64,/9j/4AAQ....`
```html
```
# `` i ``
Treśc mozna umieszac w wielu kolumnach, najczesciej w dwoch do tego sluza tagi `` i ``
parametry tagu ``
- `right` - wyrównanie tekstu do prawej
- `left` - wyrównanie tekstu do lewej
- `center` - wyśrodkowanie
- `money` - do prawej i formatowanie jako kwoty
- `width` - szerokość kolumny, mozna w %
```html
Umowa numer 3/45/2024Słupsk, dnia 20.04.2024Umowa numer 3/45/2024Witkac sp. z o.o.Słupsk, Sienkiewicza 5aNIP: 234234234
```
# ``
Tabelka z obramowaniem skladajaca się z wierszy `` i kolumn ``
własciwosci tagu ``
- `header` - oznacza ze kolumny są nagłowkami (generowane jako `
`)
- `bg` - kolor tła komórek
dodatkowe właściwosci tagu ``
- `colspan` - ile kolumn połaczyć w poziomie
- `rowspan` - ile kolumn połaczyć w pionie
```html
LpNettoBrutto{{ Koszt.Lp }}{{ Koszt.Netto }}{{ Koszt.Brutto }}
```
# Treści dynamiczne
Gdy chcemy umieścić w umowie dane z Umowy lub Oferty musimy skorzystać ze specjalnej składni ze znakami `{{` `}}`, przykładowo
```html
Umowa numer {{ Umowa.Numer }} dla {{ Oferta.NazwaFirmy }}
```
w przypadku gdy dane są uzywane w parametrach jak np. `warunek` etedy nazwe parametru nalezy poprzedzic znakiem `:`
```html
```
# Tagi specjalne
## ``
Wybiera odmianę w przypadku gdy liczba jest pojedyncza czy mnoga. W przypadku braku podania argumentu `value` jest pobierana z `settings.plural`, a jeśli nie jest ustawione to szuka pola `Oferta.IloscOferentow`. Przykłady:
```html
oferenta/oferentówoferenta/oferentówjeden/wiele
```
## ``
Generuje tekst przekreślony, ale w przypadku gry podany zostanie warunek robi to warunkowo lub wybiera z dwóch opcji
```html
tekstwielu/jeden
```
## ``
Oblicza numer paragrafu na podstawie jego tytułu lub nazwy (gdy podano)
```html
§ Obowiązki i uprawnienia informacyjne
§
```
## ``
Formatuje liczbę jako kwotę
parametry
- `currency` - waluta, domylsnie `currency` z ustawień
- `spaces` - dodaje separator tysięcy (w języku polskim dopiero od 10 000)
- `schema` - model z jSchema
```html
10.456{{ Oferta.ZrodlaFinansowaniaSuma.WkladOsobowy }}10.456
```
## ``
Zamienia na słownie złotych
parametry
- `fraction` - czy zawsze wyswietlac grosze nawet jak jest ich 0
- `schema` - model z jSchema
```html
10.456
10
10
```
## ``
formatuje datę do formau wyniakącego z języka dokumentu, domyślnie polskiego `D.MM.YYYY`
- `schema` - model z jSchema
- `date` - wartośc daty
```html
2024-04-03{{ Oferta.DataStart }}
```
## ``
koloruje tekst na wybrany kolor, obsługiwane bezpośrednio są 3 kolory: `blue` `red` i `green`, obsługuje zdefiniowane kolory w ustawieniach `w-document`
```html
To jest mój adres email daniel.jursza@witkac.plKategorycznie NIE wolno !!!BIOdegradowalne
ŻółtyJasnozielony
```
## ``
generuje ikonę FontAwesome
- `icon` - nazwa ikony (https://fontawesome.com/v4/icons/)
- `fw` - ustawia stałą szerokość
```html
```
# Tagi html
## ``
pogrubienie
```html
To jest pogrubiony tekst
```
## ``
pochylenie
```html
To jest pochylony tekst
```
## ``
podkreślenie
```html
To jest podkreślony tekst
```
## ``
przekreślenie, ale lepiej uywać ``
```html
To jest przekreślony tekst
```
## ` `
przejście do nowej lini, lepiej uywać tagu ``
```html
pierwsza linia druga linia
```
# Struktury programistyczne
## warunkowe: `if` `else` `else if`
do kazego tagu mozna dodac warunek kiedy ma być generowany (dokumentacja: https://vuejs.org/guide/essentials/conditional.html)
- `v-if` - jeśli warunek jest prawdziwy to jest generowany
- `v-else` - jeśli poprzedni tag nie spełaniał warunku `v-if` to ten tag jest generowany
- `v-else-if` - jeśli porzedni tag nie spełniał warunku `v-if` a dodatkowo ten tag spełnia nowy warunek to jest generowany
```html
Jeden OferentDwóch oferentówWięcej niz dwóch oferentów
```
gdy chcemy warunkowo generować więcej tagów to mozna je polaczyc tagiem ``
```html
Jeden Oferent{{ Oferenci[0].Nazwa }}
```
## pętle: `for`
do kadego tagu mona dodać atrybut `v-for` powodujący ze ten tag bedzie powtarzan
najczesciej uzywane do wyswietlania danych ze struktur tablicowych (dokumentacja: https://vuejs.org/guide/essentials/list)
- `v-for` - definicja petli, składnia `item in items`
```html
{{ Oferent.Nazwa }}{{ Koszt.Lp }}{{ Koszt.Netto }}{{ Koszt.Brutto }}
```
podobnie jak w przypadku `v-if` mozemy więcej tagów połączyć tagiem ``
```html
{{ Koszt.Lp }}{{ Koszt.Netto }}{{ Koszt.Brutto }}
```
# Tagi do generowania złozonych informacji
## `w-tr-repeater`
generuje wiersze do tabeli na podstawie tablicy danych
- `schema` - tablica danych ze schematem
## `w-markdown`
generuje treśc na podstawie treści w formacie markdown
- https://www.markdownguide.org/basic-syntax/
- częsciowe wsparcie dla rozszerzeń markdown (Tabelki, Bloki kodu, Przekreślenie, Lista zadań):
https://www.markdownguide.org/extended-syntax/
- `schema` - dane ze schemy
- `value` - wartość
jeśli chcemy podać treść bezpośrednio najlepiej otoczyć tagiem `
`:
```html
1. *jeden*
1. ~~dwa~~
1. trzy
1. trzy jeden
1. trzy `code` jeden
* [ ] super
* [x] extra