LAB13 - nvbach91/4IZ268-2022-2023-ZS GitHub Wiki

Vývoj webových aplikací

Obsah

  • Procvičování OAuth - Facebook
  • Pluginy
    • Bootstrap
    • Chart.js
  • HTML5 Browser API

Procvičování OAuth

Bootstrap

<!-- Always use a CDN for external libraries! i.e. https://cdnjs.com/ -->
<!-- The usage of CDN will help reduce net traffic thanks to browser cache -->
<link rel="stylesheet" href="https://.../4.1.3/bootstrap.min.css">

<script src="https://.../jquery-3.3.1.slim.min.js"></script>
<script src="https://.../popper.min.js"></script>
<script src="https://.../4.1.3/js/bootstrap.min.js"></script>

Chart.js - vizualizace dat

HTML 5 Browser API

  • globální objekt window - metody a členské proměnné přímo pod window se volají bez reference na window

Obecné funkce

alert()
confirm()
blur()
focus()
open()
close()
print()
getSelectionText()
prompt()
resizeTo()

Matematické funkce: objekt Math

Math.random()
Math.ceil()
Math.floor()
Math.round()
Math.sqrt()
Math.pow()
Math.sin()
Math.cos()
Math.tan()

Vytvoření datumu a jeho metody

const now = new Date()
now.getFullYear()
now.getMonth() + 1
now.getDate()
now.toISOString()

Funkce pro časování

const timeoutId = setTimeout(() => {}, 1000)
clearTimeout(timeoutId)
const intervalId = setInterval(() => {}, 1000)
clearInterval(intervalId)

Ovládání historie prohlížeče

history.length                           // the total number of history entries
history.back()                           // go back once
history.back()                           // go back once
history.forward()                        // go forward once
history.go(5)                            // go forward 5 entries
history.go(-2)                           // go back 2 entries
history.pushState(null, null, 'contact') // add a new entry as if you have gone one page further, with no page refresh
history.replaceState()                   // replaces the current entry

Informace o aktuální adrese prohlížeče

location.hash
location.host
location.hostname
location.href
location.origin
location.pathname
location.port
location.protocol
location.search
location.assign()
location.reload()
location.replace()

Appcache - ukládání zdrojů do prohlížeče pro offline práci

Serviceworker

image

Nahrávání souborů

<input id="file-input" type="file">
const fileInput = $('#file-input');
const reader = new FileReader();
reader.onload = (e) => {
  const content = reader.result;
  console.log(content);
};

$('#load-button').click(() => {
  const file = fileInput.get(0).files[0];
  reader.readAsText(file, 'utf8');
  reader.readAsDataURL(file);
  reader.readAsBinaryString(file);
  reader.readAsArrayBuffer(file);
});

Geolokace

<script src="http://code.jquerygeo.com/jquery.geo-1.0.0-b3.min.js"></script>
if ('geolocation' in navigator) {
  navigator.geolocation.getCurrentPosition(function(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;
    $("#map").geomap({
      center: [ longitude, latitude ],
      zoom: 15
    });
  }); //API key for geomap: AIzaSyDidOy47JccQLTF3r1j1ssfhEkZF3_ec24
}

Web storage

localStorage.setItem('myCat', 'Tom');
localStorage.getItem('myCat') === 'Tom';
localStorage.removeItem('myCat');
localStorage.clear();

// localStorage only supports string data
const cats = ['Tom', 'Infinnity', 'Puss', 'Kitty'];
localStorage.setItem('cats', JSON.stringify(cats));
localStorage.getItem('cats'); // -> "['Tom', 'Infinnity', 'Puss', 'Kitty']"
const storedCats = JSON.parse(localStorage.getItem('cats'));

Ukládání do localStorage

  • do localStorage ukládáme data v podobě, s jakou budeme pracovat v kódu po extrakci z localStorage
  • neukládáme všechna data ale pouze klíčové informace jako identifikátor, popř. název, a další vlastní data, související data stahujeme znovu z API podle uložených informací
  • Příklad: nechť máme nějaké knižní záznamy a chceme je všechny uložit do localStorage
const books = [
  {
    "id": "0",
    "title": "Harry Potter and the Philosopher's stone"
  },
  {
    "id": "1",
    "title": "Harry Potter and the Chamber of Secrets"
  }
  ...
];
localStorage.setItem('bookIds', JSON.stringify(books.map((book) => book.id)));
localStorage.getItem('bookIds'); // ["1", "2"]
  • pokud budeme chtít mazat jednotlivé záznamy, tak je ukládáme nejlépe do objektu (ale ztratíme tím pořadí záznamů)
const books = {};
items.forEach((item) => {
  books[item.id] = item.title;
});
console.log(books); // { "1": "Harry Potter and the Philosopher's stone", "2": "Harry Potter and the Chamber of Secrets" }
localStorage.setItem('books', JSON.stringify(books));

delete books["1"];
console.log(books); // { "2": "Harry Potter and the Chamber of Secrets" }
localStorage.setItem('books', JSON.stringify(books));

delete books["2"];
console.log(books); // { }
localStorage.setItem('books', JSON.stringify(books));
⚠️ **GitHub.com Fallback** ⚠️