Angular & pdfmake – kreiranje PDF-a

U ovom ću blog postu pokazati kako kreirati PDF dokument unutar Angular web aplikacije koristeći pdfmake.

Što je pdfmake?

pdfmake je biblioteka temeljena na JavaScriptu koja omogućava kreiranje PDF dokumenata iz JSON-a. Može se koristiti na serverskoj npm install pdfmake i klijentskoj bower install pdfmake strani.

Osobno, više sam za NPM nego za Bower. Razloga je nekoliko.

Kreiranje Angular projekta

Koristeći Angular CLI pokrećem novi projekt

Nakon što sam pokrenuo web aplikaciju u web pregledniku i uvjerio se da sam sve ispravno postavio mogu krenuti u instalaciju pdfmake biblioteke.

pdfmake implementacija

Nakon instalacije uvozim pdfmake u komponentu unutar koje želim kreirati PDF.

Što se vidljivog dijela aplikacije tiče ondje će se u ovom primjeru nalaziti samo tri gumba, po jedan za otvaranje, preuzimanje i ispis PDF-a.

Angular – kreiranje PDF-a koristeći pdfMake

Kreiranje PDF-a moguće je na tri načina:

1.) Otvara PDF u novom tabu web preglednika.

pdfmake open

2.) Otvara prozor za ispis.

pdfmake print

3.) Preuzimanje PDF-a na računalo. U ovom je slučaju moguće unaprijed odrediti naziv PDF-a.

pdfmak download

Kao što se vidi iz gore navedenih funkcija sadržaj od kojega se kreira PDF dobije se iz objekta this.docDefinition koji u ovom konkretnom primjeru izgleda ovako:

Više primjera moguće je pronaći na poveznici http://pdfmake.org/playground.html

Osim toga, tražio sam popis mogućih CSS stilova i za sada sam pronašao poveznicu https://stackoverflow.com/a/32805835/5059916 na kojoj se spominje nekoliko njih.

Zaključak

pdfmake omogućava brzo i jednostavno kreiranje PDF-a unutar Angular aplikacije.

I za kraj, u nastavku dajem strukturu projekta prema package.json datoteci.

Promjena verzije PHP-a za WordPress

S obzirom da sve volim imati “up-to-date”, koliko god je to moguće, nedavno sam istraživao koliki utjecaj verzija PHP-a ima na WordPress. Iako je i sam WordPress pisan u PHP-u velika je vjerojatnost da se korisnik običnog WordPress bloga nikada neće niti susresti s pravim PHP-om koji stoji “ispod poklopca”. No, to nije razlog da se zanemare prednosti koje donose novije verzije PHP-a, ako ništa drugo, onda po pitanju sigurnosti i performansi.

Što je potrebno za samostalnu promjenu PHP verzije?
WordPress instalacija
– pristup cPanelu
– pristup opciji Select PHP Version unutar cPanela
PHP Compatibility Checker plugin
Display PHP Version plugin

Trenutna verzija PHP-a

Prije svega potrebno je (sa)znati koja se verzija PHP-a trenutno koristi kako bi uopće znali koje nam opcije nadogradnje ostaju i što s njima možemo dobiti. Za tu svrhu može se koristiti “Display PHP Version” plugin koji će nakon instalacije i aktivacije unutar upravljačke ploče WordPress nadzorne ploče prikazati trenutno korištenu verziju PHP-a.

U mojem slučaju to je bila verzija 5.3.29.

Promjena verzije PHP-a za WordPress

Nakon što sam saznao koju verziju PHP-a trenutno koristim zaključujem da bi se trebao prebaciti na (naj)noviju verziju.

Promjena verzije PHP-a za WordPress
PHP Supported Versions

Međutim, prije nego to napravim trebam se uvjeriti da su tema koju koristim i svi pluginovi kompatibilni sa verzijom PHP-a, na koju se planiram prebaciti, jer se u suprotnom WordPress stranica može srušiti.

Kompatibilnost nove verzije PHP-a

Kada se koriste najnovije verzije teme i pluginova mala je vjerojatnost da isti neće biti kompatibilni sa novom verzijom PHP-a, ali ipak može se i to dogoditi. Zato je važno prije promjene provjeriti jesu li tema i svi pluginovi kompatibilni sa novom verzijom PHP-a.

To je moguće učiniti koristeći PHP Compatibility Checker plugin.

Nakon instalacije i aktivacije dovoljno je otići u izbornik Alati -> PHP Compatibility -> odabrati željenu verziju PHP-a i kliknuti na Scan site.

Prvo ću provjeriti kompatibilnost sa trenutno najnovijom verzijom PHP-a, a to je verzija 7.0

Promjena verzije PHP-a za WordPress

Iz analize mogu vidjeti da mi jedan plugin, konkretno Social Warfare Pro kojeg sam platio 30ak $, nije kompatibilan sa verzijom 7.0 PHP-a. Zbog toga trenutno odlučujem da neću prelaziti na najnoviju verziju PHP-a, barem ne dok ne istražim moguće načine kako taj plugin prilagoditi ili moguće posljedice nadogradnje unatoč nekompatibilnosti.

Promjena verzije PHP-a za WordPress

Sljedeća logična verzija PHP-a je 5.6 te odlučujem testirati kompatibilnost svoje instalacije WordPressa s tom verzijom. Zaključujem da imam punu kompatibilnost i da se slobodno mogu prebaciti na verziju PHP-a 5.6

Promjena verzije PHP-a za WordPress

Promjena verzije PHP-a

Sada mogu otići u cPanel i promijeniti verziju PHP-a koristeći Select PHP Version.

Promjena verzije PHP-a za WordPress

Odabirem verziju 5.6 i klikom na Set as current potvrđujem da tu verziju želim koristiti.

Promjena verzije PHP-a za WordPress

Ako se sada vratim u nadzornu ploču mogu vidjeti da je nova verzija PHP-a za WordPress 5.6.32

Promjena verzije PHP-a za WordPress

Zaključak

So, now you know – PHP versions aren’t something you have to think about a lot, but it’s the engine that runs everything else. It matters, and you can improve your speed, security and compatibility, by making the right choice. – Does your PHP version matter?

Kako prilagoditi Angular početni zaslon (Initial Loading Screen)

Ako ste do sada razvijali Angular web aplikacije ili koristili tuđe mogli ste kod svih njih primijetiti jednu zajedničku stvar, a to je početni zaslon koji se prikazuje prije nego se učita Angular aplikacija i na kojemu u gornjem lijevom kutu ekrana piše “Loading…” (Angular 2) uz monotonu bijelu pozadinsku boju. Kasnije je to izbačeno te se prikazuje samo obična, prazna, bijela pozadina (>= Angular 4).

Išao sam malo istražiti kako najbolje to riješiti tako da i meni kao developeru, a i korisniku bude lijepo. Našao sam nekoliko mogućnosti od kojih sam odabrao jednu o kojoj ću nešto više napisati u nastavku.

Kreiranje novog Angular projekta

Koristeći Angular CLI pokrećem novi projekt

Početni zaslon je čisto bijele boje i to je dobar izbor ako nakon toga ide prikaz npr. stranice za prijavu korisnika s bijelom pozadinom. U tom će se slučaju te dvije bijele pozadinske boje lijepo stopiti i činiti cjelinu.

Kako prilagoditi Angular početni zaslon (Initial Loading Screen)

Prilagođeni početni zaslon

Za promjenu prikaza početnog zaslona dovoljno je kreirati novi <div> s klasom loading.

Na kraju to izgleda ovako

Kako prilagoditi Angular početni zaslon (Initial Loading Screen)

Zaključak

To bi bilo sve. Ovo se možda ne čini kao nešto vrijedno spomena, ali svakako daje onaj završni sjaj Angular web aplikaciji.

Angular CRUD aplikacija

U ovom ću blog postu napraviti jednostavnu Angular CRUD (create, read, update, delete) aplikaciju koja će se sastojati od forme za pregled podataka uz mogućnost dodavanja, uređivanja i brisanja podataka.

CRUD operacije nešto su s čime se svaki web developer najčešće susreće i zato bi ovaj primjer posebno mogao biti koristan novim developerima ili onima koji će to tek postati.

Uvod

Cilj ovog blog posta je pokazati:
– kako kreirati Angular projekt koristeći Angular CLI
– kako kreirati i koristiti servis pomoću kojega ću pozivati JSON API
– kako dodati Bootstrap za brže kreiranje forme za unos, pregled, uređivanje i brisanje sadržaja

Kreiranje Angular projekta

Pomoću Angular CLI-a kreirat ću novi projekt.

Ako projekt sada otvorim u web pregledniku na adresi http://localhost:4200/ dobit ću sljedeće

Angular CRUD aplikacija

S obzirom da umjesto toga želim imati formu za unos, pregled, uređivanje i brisanje sadržaja prvo ću dodati podršku za Bootstrap na način da u index.html dodam

. I sada mogu koristiti Bootstrap komponente.

Kasnije ću se vratiti na izgled forme, a sada idem postaviti glavni dio funkcionalnosti koji se tiče kreiranja servisa i pozivanja API-ja.

Kreiranje servisa za API

Servis pomoću kojega ću vršiti sve upite na API kreiram naredbom

Nakon čega dobijem korisnici-api.service.ts

Servis se može koristiti za različite svrhe, ali kako ću meni ovdje glavna svrha biti slanje upita na API znači da obavezno moram koristiti Http servis.

Konačan izgled servisa može se vidjeti u nastavku, a njime je pokriveno sve – od pregleda svih korisnika, dodavanja novih, uređivanja i brisanja postojećih.

Izgled forme (app.component.html)

Za izgled forme iskoristit ću Bootstrap komponente. Struktura forme nalazi se unutar app.component.html, a izgleda ovako:

Forma na početku i bez podataka izgleda ovako:

Angular CRUD aplikacija

Sada kada imam definiran izgled forme mogu kreirati opcije koje će joj dati funkcionalnost.

Dodavanje (POST)

Što se dodavanja sadržaja tiče nije ga moguće dodati dok sva obavezna polja nisu unesena. U ovom slučaju postoje dva polja, ime i prezime te broj telefona, i oba su obavezna. S obzirom da u formi za sada nema niti jednog korisnika *ngIf="ukupanbrojkorisnika < 1" prikezuje se poruka “Nema podataka”.

Nakon dodavanja korisnika popis se automatski osvježava i prikazuje sve dodane korisnike.

Angular CRUD aplikacija

Pregled (GET)

Kada se Angular web aplikacija pokrene automatski se dohvaća popis svih do tada unesenih korisnika. Za tu svrhu koristim ngOnInit() što je dio Angular Lifecycle Hook.

Također, odmah dohvaćam i dužinu niza this.ukupanbrojkorisnika = res.length; kako bi mogao prikazati ukupan broj korisnika.

Angular CRUD aplikacija

Uređivanje (PUT)

Kod uređivanja korisnika imam dvije funkcije. Prva urediKorisnika(); dohvaća podatke odabranog korisnika i prikazuje ih u gornjoj formi za unos/uređivanje, a druga urediKorisnika2(); obavlja proces uređivanja odabranog korisnika tj. šalje nove podatke na API.

Nakon što su novi podaci poslani popis korisnika se automatski osvježava, a gumb ‘Uredi’ ponovno postaje ‘Spremi’.

Angular CRUD aplikacija

Brisanje (DELETE)

Brisanje korisnika zadnji je korak izrade ovog CRUD primjera. Nakon što je odabrani korisnik obrisan popis se automatski osvježava.

Angular CRUD aplikacija

Zaključak

Ovo je bio jednostavan primjer Angular CRUD forme. Mogao sam ovdje dodatno uljepšati izgled forme ili na drugačiji način slati upite na API, ali mislim da je ovo sasvim dovoljno za početak jer kako god bilo korištenjem ovog primjera može se napraviti funkcionalna forma za unos, pregled, uređivanje i brisanje sadržaja.

I za kraj, NPM paketi korišteni u ovom primjeru:

Uvod u Angular Material

Prilikom pokretanja Angular projekta dobijemo dobru osnovu za razvoj web aplikacija. S obzirom da to podrazumijeva i dobar dizajn važno je odmah na početku odabrati kojim putem će se krenuti. U velikom broju slučajeva dobar izbor je Bootstrap, ali ako želimo nešto u skladu s trenutnim trendovima možemo koristiti još i Angular Material.

Kreiranje Angular projekta

Novi projekt kreiramo koristeći Angular CLI i pokrećemo naredbom

Sada na adresi http://localhost:4200 možemo vidjeti sljedeće

Angular Material dizajn - početna stranica

Instalacija Angular Material paketa

U mapi ranije kreiranog projekta pokrećemo sljedeću naredbu

Instalirali smo tri nova NPM paketa:
@angular/material – službeni Material paket za Angular
@angular/cdk – CDK (Component Development Kit) pruža mogućnost razvoja prilagođenih Angular Material komponenti
@angular/animations – neke komponente ovise o ovome kako bi mogle prikazivati napredne tranzicije

I sada unutar package.json možemo vidjeti sljedeće

Zadane Material teme

Uvod u Angular Material

Angular Material nudi nam mogućnost biranja između nekoliko zadanih tema koje u projekt možemo dodati jednostavnim uvozom unutar datoteke src/styles.css

deeppurple-amber.css – @import ‘~@angular/material/prebuilt-themes/deeppurple-amber.css’;
indigo-pink.css – @import ‘~@angular/material/prebuilt-themes/indigo-pink.css’;
pink-bluegrey.css – @import ‘~@angular/material/prebuilt-themes/pink-bluegrey.css’;
purple-green.css – @import ‘~@angular/material/prebuilt-themes/purple-green.css’;

Material ikone i tipografija

Osim tema imamo mogućnost korištenja i Angular Material ikona kao i tipografije.

Angular Material ikone

To postižemo dodavanjem sljedeće poveznice unutar src/index.html

Podrška za geste

U službenoj dokumentaciji spominje se još u Hammer.JS paket kojega je potrebno dodati u Angular projekt ako se planiraju koristiti komponente kao što su npr. Tooltip i Slider, kako bi se iz njih dobila maksimalna funkcionalnost.

Nakon instalacije potrebno je unutar src/main.ts dodati

Angular Material komponente

Instalacijom ranije navedenih paketa još uvijek nismo sve riješili i naš Angular projekt i dalje nema podršku za korištenje svih Angular Material komponenti.

Ako npr. želimo u projekt dodati npr. Card komponentu moramo unutar njene dokumentacije pronaći API referencu koja će nam to omogućiti.

Angular Material kartica

Za svaku komponentu koju želimo koristiti moramo pronaći pripadajuću API referencu i navesti ju unutar naše app.module.ts datoteke što na kraju može izgledati i ovako:

Ako sada usporedimo sliku izgleda Angular aplikacije s početka ovog blog posta i nakon dodavanja Angular Materiala razlika je jasno vidljiva.

Uvod u Angular Material dizajn

Zaključak

I to je sve. Ovo čak može djelovati i previše jednostavno da bi bilo istinito, ali to je zapravo i cilj korištenja Angular Materiala.