Recenzija: CSS Grid by Wes Bos, 2. dio

Wes Bos je poduzetnik i autor nekoliko tečajeva, među kojima je i ovaj o CSS Gridu. S obzirom da mi njegov stil podučavanja odgovara neke od tečajeva sam i kupio kako bi na strukturiran način saznao i naučio nešto novo.

Redovito ih se sjetim kada me netko od kolega pita za dobre online resurse, a prema njihovim pozitivnim reakcijama zaključio sam da bi bilo dobro nešto više o tome napisati i na blogu.

Jedan od tih tečajeva je CSS Grid koji je u potpunosti besplatan, a moguće ga je pronaći na adresi https://cssgrid.io/. Sastoji se od 25 videa tj. lekcija od kojih će svaka biti detaljnije pojašnjena u nastavku.

Prvi dio blog posta objavljen pod naslovomRecenzija: CSS Grid by Wes Bos, 1. dio“.

11.) Spanning and Placing Cardio

U ovom dijelu tečaja cilj je ponoviti sve do sada obrađeno tj. samostalno napraviti primjer stranice sa zadanim rasmještajem elemenata.

Ovdje je poželjno “izgubiti” nešto vremena i barem pokušati samostalno napraviti krajnje rješenje nego u startu gledati kako ti radi Wes Bos.

Krajnje rješenje izgleda kao u nastavku. Zakomentirani dijelovi su moji pokušaji prije nego sam ih ispravno napravio.

Spanning and Placing Cardio

12.) auto-fit and auto-fill

auto-fit i auto-fill koriste se za bolje upravljanje kolonama tj. stupcima grid-template-columns.

Na početku imam sljedeću situaciju

Na ekranu će to izgledati kao na slici ispod. Znači, imam pet kolona i višak praznog prostora sa desne strane ekrana. U slučaju kada znam kakav će sadržaj biti u svakoj koloni tj. kada znam koliko takvih kolona mi je potrebno da bi popunio cijeli red onda mogu koristiti nešto kao grid-template-columns: repeat(5, 100px).

auto-fit i auto-fill

Međutim ako nisam siguran kakav će mi biti sadržaj u svakoj koloni niti koliko njih mi je potrebno da popunim cijeli red, a ipak želim da cijeli red bude dinamički popunjen mogu koristiti npr. grid-template-columns: repeat(auto-fill, 100px) tj. grid-template-columns: repeat(auto-fit, 100px) i rezultat će biti sljedeći

auto-fit i auto-fill

Gledajući gornju sliku lako se može zaključiti da ne postoji razlika između auto-fit i auto-fill, međutim razlika postoji i može se vidjeti kada nema dovoljno kolona da popune cijeli red.

auto-fit završava red iza zadnje kolone – vidljivo po punoj okomitoj liniji na kraju zadnje kolone što označava explicit grid pojašnjen u prethodnom blog postu.

auto-fit i auto-fill

auto-fill kreira prazne kolone u preostalom prostoru. U te je kolone moguće postaviti novi sadržaj.

auto-fit i auto-fill

Npr. mogu dodati jednu kolonu u krajnji desni rub ekrana.

auto-fit i auto-fill

Google My Business API – kako ga aktivirati i koristiti

Google My Business API pruža brz i jednostavan način za tvrtke, proizvode, robne marke, umjetnike i organizacije da upravljaju svojim lokacijama na Google mreži.

API omogućava da se lokacijama upravlja putem prilagođenih aplikacija, npr. možemo napraviti Ionic mobilnu aplikaciju ili web Angular aplikaciju koja će dohvaćati popis svih naših lokacija sa Google mreže. Na taj način na jednom mjestu imamo pregled detalja svih lokacija. Također, za svaku od tih lokacija možemo uređivati te detalje ili dodavati nove informacije bez potrebe za ručnom prijavom u Google My Business sučelje na adresi http://business.google.com/manage.

Preduvjeti

Nekoliko je preduvjeta potrebno zadovoljiti kako bi se Google My Business API mogao koristiti jer inače nije dostupan unutar Google Developer Console.

1.) Google račun

Potrebno je kreirati Google račun kako bi se moglo pristupiti Google API Console sučelju. Za pretpostaviti je da već imamo Google račun ako želimo upravljati našim lokacijama koje smo ranije već kreirali u Google mreži, ali eto ovo je ipak prvi korak.

2.) Upoznati Google My Business sučelje

Prije korištenja API-ja važno je dobro upoznati što sve nudi Google My Business sučelje na adresi http://business.google.com/manage kako bi se uopće znalo kojim podacima je moguće upravljati.

Google My Business

3.) Google API Console

Kreirati projekt unutar Google API Console sučelja na adresi https://console.developers.google.com/project. Ovdje će se kasnije aktivirati Google My Business API.

P.S. Ako ste pratili neke od mojih ranijih blog postova možete prepoznati projekte koje sam kreirao upravo za te blog postove.

Google API Console

4.) Zatražiti pristup API-ju.

U ovom je koraku potrebno ispuniti Google My Business API: Application Form For Basic Access formu.

1. stranica

Google My Business API

2. stranica

Project ID – može se vidjeti u jednoj od gornjih slika. Lijevo se nalazi naziv projekta, a desno project ID.
Project Number – može se pronaći na adresi https://console.developers.google.com/iam-admin/settings?project=projectid
Gmail e-mail adrese – e-mail adrese developera koji će raditi s API-jem

Project ID & Project Number

Google My Business API

3. stranica

Company Name – naziv tvrtke
Company Website – web adresa tvrtke
Company’s Headquarters Address – adresa tvrtke
Company HQ’s Google Maps Listing URL – Google Maps poveznica tvrtkine adrese
Your Name – ime i prezime osobe koja ispunjava formu
Your Email – e-mail adresa, odgovorne, osobe koja ispunjava formu. Mora imati isti nastavak kao i web adresa. Ovo će biti glavna e-mail adresa za svu komunikaciju sa Googleom.
Gmail adresa Google Account Managera ako ga imate. U suprotnom navesti N/A.

Google My Business API

4. stranica

Potrebno odabrati u kojoj se kategoriji tvrtka nalazi, Local Business ili Third-pary / Reseller / Agency. Ostala će pitanja ovisiti o ovom odabiru.

Google My Business API

5. stranica – ako se odabere Local Business

– Odabrati na koliko se lokacija poduzeće nalazi, manje ili više od 10.
– Označiti koristi li se trenutno Google My Business za upravljanje lokacijama.
– Ako je odgovor na prethodno pitanje “da” potrebno je navesti Gmail adresu ili adrese koje imaju mogućnost pristupa Google My Business web sučelju.
– Za kraj, opisati u koju svrhu se planira koristiti Google My Business API.

Local Business

6. stranica – ako se odabere Third-pary / Reseller / Agency

Third-pary / Reseller / Agency

8. stranica – na nju se dođe nakon što se ispuni 5. ili 6. i 7. stranica

Technical / Product Information

Klikom na “SUBMIT” pojavljuje se ekran s osnovnim informacijama.

Google My Business API: Application Form For Basic Access

Sada se može jedino čekati. Iako navode da je potrebno do dva tjedna za odgovor obično će on stići kroz 2-3 radna dana.

Nakon što Google pregleda zahtjev i omogući pristup API-ju stići će poruka na e-mail adresu, npr. @tvrtka.com, navedenu unutar forme sa sljedećim sadržajem:

Google My Business API

Dodavanje developera

Već sada mogu dodati Gmail račune developera koji će imati mogućnost upravljanja API-jem, a koje sam naveo prilikom ispunjavanja forme.

U Google API Console sučelju, u gornjem desnom uglu, klikom na Project settings pojavljuje se izbornik s lijeve strane i ondje odabirem IAM kako bi klikom na ADD dodao Gmail račun novog developera.

Google API Console

Uskoro će navedeni developeri dobiti e-mail sljedećeg sadržaja

Google API Console

Oni sada, ovisno o dobivenim pravima, mogu raditi sve što ću napisati u nastavku.

Aktivacija Google My Business API-ja

Povratak u Google API Console sučelje na adresu projekta https://console.developers.google.com/apis/library?project=projectid

Tek sada je u katalogu API-ja, moguće pronaći Google My Business API.

VAŽNO! Ako se nisu obavili koraci navedeni iznad tj. ako se nije ispunio upitnik i ako nije stigao potvrdni e-mail Google My Business API neće biti moguće pronaći i aktivirati.

Google My Business API

Aktivacija se obavlja klikom na “ENABLE“.

Google My Business API

OAuth 2.0 client ID

Nakon što je API aktiviran potrebno je kreirati OAuth 2.0 client ID zato što API nije javan i Google na taj način kontrolira da API koriste samo one osobe koje na to imaju pravo.

Svaki zahtjev koji se uputi na Google My Business API treba u sebi sadržavati OAuth 2.0 token koji se kreira unutar izbornika Credentials. Ovdje mi je bitan Client ID.

Client ID for Web application

S obzirom da API planiram testirati na OAuth 2.0 Playground moram odobriti adresu https://developers.google.com/oauthplayground kako bi s iste mogao slati upite na API.

OAuth 2.0 client ID

U gornjem desnom kutu klikom na ikonu kotačića otvaraju se postavke. Za “OAuth flow” je potrebno odabrati Client-side. Osim toga potrebno je još kliknuti i na “Use your own OAuth credentials” te ondje unijeti ranije kreiran OAuth client ID.

OAuth 2.0 Playground

U izborniku s lijeve strane pod “Step 1 – Select & authorize APIs” je potrebno unijeti https://www.googleapis.com/auth/plus.business.manage i kliknuti na Authorize APIs.

Pod “Step 2 – Configure request to API” je potrebno unijeti https://mybusiness.googleapis.com/v4/accounts i kliknuti na Send the request.

Ako je sve prošlo uspješno prikazati će se status 200 OK što znači da je API funkcionalan.

OAuth 2.0 Playground

Na slici iznad može se vidjeti i autorizacijski token Bearer ya29.GlvmBlVJdoojCkXP9boiD1oudk8teDNzqls485U6Uylf74QUc2mlhw0RDOoszfdqo594IH2YOqVjNwCPscwEgFPqs3pwiRNPizJyrdUHaJCiiI-pjnX4TyPpK1ic koji ću sada iskoristiti kako bi isti upit na API napravio kroz Postman.

Kao što se može vidjeti na sljedećoj slici dobio sam rezultat s popisom lokacija tj. detalje, radno vrijeme, tih lokacija.

Google My Business API - Postman

Bez autorizacijskog tokena ne bi mogao dobiti traženi rezultat s popisom lokacija.

Google My Business API - Postman

Više informacija o ostalim dostupnim API pozivima na poveznici https://developers.google.com/my-business/reference/rest/

Uber API & Ionic 4 – Ride Request Button

U ovom ću blog postu pokazati kako koristiti Uber API tj. Ride Request Button unutar Ionic 4 aplikacije.

Ride Request Button je najjednostavniji i najbrži način da se unutar Ionic aplikacije omogući korištenje Ubera tj. slanje zahtjeva za vožnjom.

Dovoljno je kliknuti na gumb i korisnik će automatski biti preusmjeren unutar Uber aplikacije kojoj će biti prosljeđeni parametri kao što su mjesto preuzimanja i mjesto odredišta, uz ostale opcionalne parametre.

The Ride Request Button

Developer Dashboard

Prije svega potrebno je kreirati korisnički računa unutar Developer Dashboard sučelja. Također, potrebno je kreirati i profil za mobilnu aplikaciju koja će koristiti Uber API.

Developer Dashboard Uber API

Od podataka ovdje su mi najvažniji Client ID, Server Token i Client Secret.

Developer Dashboard Uber API
Parametar Opis
client_id Služi kao identifikator aplikacije, nešto kao korisničko ime aplikacije.
client_secret Služi kao lozinka aplikacije.
server_token Omogućava slanje zahtjeva prema API-ju.

Slanje upita na API

Sada se prebacujem na Uber API dokumentaciju.

Ekran će se sastojati od prikaza Google karte na većem dijelu ekrana i Uber gumba na dnu ekrana. Klikom na taj gumb poziva se Uber aplikacija kojoj prosljeđujem parametre:

  • clientID – obavezno
  • pickupLat
  • pickupLng
  • dropoffLat – obavezno
  • dropoffLng – obavezno

Uber API & Ionic 4 Na slici iznad vidim ekran sa Google kartom na kojoj se nalazi lokacija gdje želim da me Uber odveze. Ako mu i ne proslijedim svoju lokaciju Uber aplikacija će ju sama dohvatiti.

Čak niti Uber aplikacije ne mora, u trenutku klika na gumb, biti instalirana na mobilnom uređaju.

Uber Ride Request Button

Recenzija: CSS Grid by Wes Bos, 1. dio

Kada su u pitanju HTML i CSS dosta developera voli misliti da ih zna 90%-100%, a upravo ovakvi tečajevi služe da to demantiraju.

Wes Bos je poduzetnik i autor nekoliko tečajeva, među kojima je i ovaj o CSS Gridu. S obzirom da mi njegov stil podučavanja odgovara neke od tečajeva sam i kupio kako bi na strukturiran način saznao i naučio nešto novo.

Redovito ih se sjetim kada me netko od kolega pita za dobre online resurse, a prema njihovim pozitivnim reakcijama zaključio sam da bi bilo dobro nešto više o tome napisati i na blogu.

Jedan od tih tečajeva je CSS Grid koji je u potpunosti besplatan, a moguće ga je pronaći na adresi https://cssgrid.io/. Sastoji se od 25 videa tj. lekcija od kojih će svaka biti detaljnije pojašnjena u nastavku. Trajanje snimljenog materijala je 4 sata, ali ako se paralelno idu raditi primjeri satnica će vrlo brzo rasti.

CSS Grid by Wes Bos

1. Introduction

U ovom dijelu Wes Bos daje uvod u tečaj i naglašava kako Firefox stoji iza odluke da tečaj bude besplatan zbog čega ćemo koristiti njihove alate u nastavku tečaja.

Autor također potiče developere koji će krenuti s ovim tečajem da redovito daju povratne informacije, bilo to putem društvenih mreža ili blogova.

Osim toga, na svakome od nas ostaje odluka hoćemo li ovaj tečaj pogledati samo da bismo mogli reći da smo ga prošli ili ćemo paralelno raditi primjere i tako nešto konkretno i naučiti.

2. Starter files

Preporuka ovog dijela tečaja je preuzeti i koristiti Firefox Quantum: Developer Edition koji je sa svojim naprednim rješenjima prilagođen upravo developerima.

Sve starter datoteke moguće je preuzeti na adresi https://courses.wesbos.com/account/ nakon besplatne registracije. Za one nestrpljive datoteke se nalaze i na sljedećoj poveznici https://github.com/wesbos/css-grid.

Nakon preuzimanja moguće je vidjeti package.json datoteku:

Zbog paketa “browser-sync” i “run-script-os” potrebno je na računalu imati instaliran NodeJS.

Pokretanjem ove dvije naredbe instaliram ranije navedene NPM pakete i tečaj mi se otvara u odabranom web pregledniku.

CSS Grid by Wes Bos

Ovo je sada temelj svega što ću u nastavku raditi.

3. CSS Grid Fundamentals

Fokus ovog dijela tečaja je odgovor na pitanje – što je CSS Grid? U donjem primjeru ako smo za klasu container rekli da je display: grid; automatski smo sve unutarnje elemente, u ovom slučaju to su <div class="item">1</div>, klasificirali kao dijelove CSS Grida.

Nakon toga ostaje podijeliti ih u redove i kolone pomoću: grid-template-columns, grid-template-rows i grid-gap.

4. CSS Grid Dev Tools

Desni klik miša tj. odabir “Inspect Elements” vodi nas do dijela web preglednika koji je poznat svakom web developeru.

Ovdje upoznajemo Grid Inspector.

Grid Inspector

5. CSS Grid Implicit vs Explicit Tracks

Explicit označava sve kolone (grid-template-columns) i redove (grid-template-rows) koje smo sami odredili tj. zadali im parametre. U ovom primjeru to su prve dvije kolone tj. prva dva reda.

Explicit CSS Grid

Implicit označava sve preostale kolone (grid-auto-columns) i redove (grid-auto-rows). U ovom primjeru to su zadnja dva, tj. blokovi 5, 6, 7 i 8.

Implicit CSS Grid

Zaključno, u sljedećem primjeru explicit su nam kolone dok su redovi implicit jer njih nigdje nismo definirali, a svejedno ih imamo.

CSS Grid Implicit vs Explicit Tracks

6. CSS Grid Auto Flow

U ovom dijelu tečaja pojašnjen je grid-auto-flow pomoću kojega određujemo hoće li implicitno kreirani elementi biti prikazani kao redovi ili stupci.

U startu dodajemo dva elementa i za njih definiramo dva stupca.

CSS Grid Auto Flow

Međutim, ako dodamo nekoliko novih elemenata koje nismo eksplicitno odredili pitanje je gdje će se oni prikazati.

Zadano će biti prikazani kao redovi,

CSS Grid Auto Flow

a možemo ih prikazati i kao stupce.

CSS Grid Auto Flow

Zaključno, na taj se način može napraviti horizontalni scroll.

CSS Grid Auto Flow

7. Sizing tracks in CSS Grid

Ovdje se upoznajemo s fr (fractional unit) jedinicom koja označava preostali slobodan prostor na ekranu.

Ako definiramo tri stupca na sljedeći način

prva dva će biti široka 150px dok će zadnji biti širok koliko god je ostalo viška prostora.

Fr (fractional unit) uzima u obzir grid-gap tako da naši stupci prikazuju u prostoru koji ostane nakon što se zauzme grid-gap.

Sizing tracks in CSS Grid

Isto tako, moguće je koristiti i parametar auto.

Donji primjer označava prvi stupac čija je širina određena kao auto što znači da će on biti širok koliko i sadržaj unutar njega dok će drugi stupac uzeti preostali prostor 1fr.

Sizing tracks in CSS Grid

8. CSS Grid repeat function

Sve navedeno ranije može se napraviti na jednostavniji način koristeći repeat() funkciju. Npr. umjesto definiranja četiri stupca na standardni način

možemo ih definirati na sljedeći način gdje prva vrijednost označava koliko puta je taj element potrebno ponoviti, a druga vrijednost označava širinu.

Rezultat će biti isti tj. imati ćemo četiri stupca jednake širine.

CSS Grid repeat function

Mogu se raditi i naprednije stvari. Npr. prvi stupac će biti širok 100px dok će od preostalih osam jedan biti 1fr, drugi 2fr, treći 1fr,…

CSS Grid repeat function

9. Sizing Grid Items

U ovom dijelu fokus je na pojedinačnim elementima kompletnog grida, <div class="item item1">1</div>.

Ako napravimo sljedeće dobit ćemo pet stupaca koji su raspoređeni tako da zauzimaju sav slobodan prostor.

Sizing grid items

Pomoću parametara grid-column i grid-row možemo zadati visinu odnosno širinu pojedinog elementa, neka to sada bude .item17. Ostali elementi se automatski repozicioniraju.

Pomoću grid-column: span 2; određujemo širinu.

Sizing grid items

Pomoću grid-row: span 2; određujemo visinu.

Sizing grid items

Ako ih koristimo zajedno određujemo visinu i širinu.

Sizing grid items

U primjeru na slici iznad odredili smo visinu i širinu jednog elementa dok su se ostali automatski posložili na svoje nove pozicije.

U nastavku se može vidjeti primjer kada odabranom elementu zadajemo mjesto početka i mjesto završetka.

10. Placing Grid Items

Početni raspored svih elemenata izgleda ovako i ovdje će fokus biti na pozicioniranju elementa s klasom .poop.

Placing Grid Items

Na ovaj način određujem startnu poziciju odabranog elementa.

Placing Grid Items

Sada ću uz mjesto početka odabranom elementu zadati i mjesto završetka.

To mogu napraviti pojedinačno za početak i završetak.

A mogu i na skraćeni način.

Rezultat je isti.

Placing Grid Items

Osim što odabranom elementu na gornji način mogu reći gdje počinje i završava također mu na sljedeći način mogu odrediti širinu.

Placing Grid Items

Placing Grid Items

Ako želim da odabrani element uvijek počinje na prvom mjestu i završava na posljednjem napravit ću sljedeće. Ovo se može koristiti i kao zamjena za width: 100%;

Placing Grid Items

Isto to možemo napraviti i kada su u pitanju redovi koristeći grid-row.

Placing Grid Items

Naravno, moguće ih je i kombinirati.

Placing Grid Items

Nastavak ovog blog posta uskoro pod naslovom “Recenzija: CSS Grid by Wes Bos, 2. dio“.

Ionic 4 Slides – prikaz galerije slika

O ovom ću blog postu pokazati nekoliko načina na koje je moguće koristiti ion-slides komponentu unutar Ionic 4 aplikacije.

ion-slides komponenta sastoji se od više zasebnih dijelova. Svaki od tih dijelova je zapravo jedna ion-slide komponenta.

Ionic 4 Slides
https://ionicframework.com/docs/api/slides

Ova se komponenta može koristiti za prikaz uputa prilikom prvog pokretanja mobilne aplikacije, primjer čega se nalazi u dokumentaciji, ali se isto tako pomoću ove komponente može napraviti lijepa galerija slika. Slike se mogu pomicati lijevo-desno, ali ih je isto tako moguće postaviti da se pomiču automatski u određenim intervalima.

S obzirom da ion-slides svoje temelje ima u Swiper.js-u i ondje je moguće pronaći dodatne opcije za upravljanje slajdovima.

Kreiranje aplikacije

Struktura ekrana na kojemu ću testirati ion-slides izgleda ovako:

Slike se nalaze unutar assets/imgs mape.

Ionic 4 - Assets Images

Galerija preko cijelog ekrana

Galerija preko cijelog ekrana

U ovom primjeru slike zauzimaju cijeli ekran. Dolaskom do zadnje slike nije moguće ići dalje loop: 'false'.

Galerija preko jednog dijela ekrana

Galerija preko jednog dijela ekrana

U ovom primjeru galerija slika zauzima samo jedan dio ekrana ispod koje se onda vidi ostatak sadržaja. Dolaskom do zadnje slike moguće je ići dalje tj. napraviti puni krug do prve slike pomoću loop: 'true'.

Zaključak

Struktura projekta prema package.json