S3 2016 taller-javascript-v2

102
Taller de fundamentos aplicados de JAVASCRIPT 3 Manuel Gértrudix – Sergio Álvarez

Transcript of S3 2016 taller-javascript-v2

Page 1: S3 2016 taller-javascript-v2

Taller de fundamentos aplicados de JAVASCRIPT3Manuel Gértrudix – Sergio Álvarez

Page 2: S3 2016 taller-javascript-v2

1. JSON2. Librerías y APIs

¿Qué vamos a aprender?

Mapas•Google Maps•CartoDB•MapBox

Datos•Google Charts y derivados•Highcharts.js•Otros (Morris, Chart.js)

Imágenes•Pictográficas•Chartist.js•Librerías 3D

Animación•Animate.css

3. Otras aplicaciones• VIS• ArcGIS• Tools knight lab

Page 3: S3 2016 taller-javascript-v2

Para qué sirve Qué es JSON

Sintaxis básica

JSON

Page 4: S3 2016 taller-javascript-v2

¿Qué es?JSON

JSON es el acrónimo de JavaScript Object Notation Es un lenguaje independiente con una sintaxis basada

en Javascript para • Almacenamiento e intercambio de datos

Se utiliza en aplicaciones AJAX Es una alternativa a XML más sencilla de usar

JSON

XML

Page 5: S3 2016 taller-javascript-v2

¿Por qué es importante?JSON

JSON resulta relevante por: Es la respuesta de datos que devuelven la mayoría de las APIs web Muchos portales de datos abiertos ofrecen la información en este

formato Porque facilita la integración y visualización de información

Page 7: S3 2016 taller-javascript-v2

SintaxisJSON

El formato JSON es idéntico al que se utiliza en JS para crear objetos

Los datos son convertidos y tratados como objetos, por lo que:• Se le aplican métodos, se crean variables, etc.

• Es más sencillo que XML ya que:• Es más corto

• No requiere etiquetas de cierre

• Puede usar arrays de datos

• Puede ser “parseado” con una función JS estándar

Page 8: S3 2016 taller-javascript-v2

SintaxisJSON

Reglas• Los datos se cargan en el par nombre/valor

• Los datos se separan con comas ,• Los objetos se agrupan con llaves { }

• Los arrays de datos se agrupan con corchetes [ ]

Page 9: S3 2016 taller-javascript-v2

SintaxisJSON

Carga de datos con el objeto JSON http Request• Habitualmente JSON carga los datos desde un servidor

web y muestra estos en una página web Pasos cargando desde un fichero:

• Se crea un array de objetos, y se crea una función que muestra el contenido en el html

• Se guarda el array: • en un fichero externo (txt, cvs…)

• En una BBDD (vg. MySQL) mediante PHP

• Mediante el método XMLHttpRequest se lee el fichero y se escribe en la web para mostrar los datos

Page 10: S3 2016 taller-javascript-v2

VisorJSON

Los visores JSON permiten cargar directamente en el navegador un fichero JSON para visualizar su contenido:

Jsonviewer.stack.hu nos permite cargar un fichero o ver un enlace desde la web

http://jsonviewer.stack.hu/

Page 11: S3 2016 taller-javascript-v2

Qué es una librería Qué es una API Para qué sirven

Cuáles son interesantes

Librerías y APIs

Page 12: S3 2016 taller-javascript-v2

Resumiendo mucho Se trata de colecciones de funciones JS disponibles en un único fichero

compartido

Para qué nos sirven Ahorran tiempo de programación JS Permiten reutilizar el código (incluso la carga) Son ligeras (4-8 Kb)

¿Qué es una librería JS?

Page 13: S3 2016 taller-javascript-v2

Una API (Aplication Programation Interface) es una especificación que permite comunicar componentes de software• Comprende el conjunto de funciones, procedimientos

y objetos que contiene una librería o biblioteca.• Dichos elementos pueden ser invocados desde otros

componentes software para acceder a servicios y realizar procesos.

• Es un método para mejorar la abstracción en programación

¿Qué es una API?

Page 14: S3 2016 taller-javascript-v2

Mapas• Google Maps• CartoDB• MapBox

Animación• Animate.css• ScrollReveal

Aplicaciones• Angular.js• Modernizr

DOM• JQuery• Prototype

Imágenes• Three.js• Chartist.js• Pictográficas

Datos• Chart.js• Highcharts.ks

Tipos de librerías

Comparativa

Page 15: S3 2016 taller-javascript-v2

Google Maps CartoDB

Librerías para mapas

Page 16: S3 2016 taller-javascript-v2

Librerías para mapas interactivosGeoJSON

GeoJSON es un formato de datos, basado en la sintásis de JSON, que intercambia datos con servicios y tecnologías GIS (Sistemas de Información Geográfica)

Leaflet es una librería especializada para la creación de mapas interactivos

http://leafletjs.com/examples.html

Page 17: S3 2016 taller-javascript-v2

Google Maps APICarga en el head

Page 18: S3 2016 taller-javascript-v2

Pasos para crear un mapa

1. Se carga la API

2. Se crea una función para iniciar el mapa

3. A través de una variable, se crea un objeto para definir las propiedades del mapa

LocalizaciónNivel de zoom

Tipo de mapa

Page 19: S3 2016 taller-javascript-v2

Pasos para crear un mapa

4. Se crea el contenedor del mapa

5. Se crea el objeto mapa

6. Por último, se coloca un evento Listener para cargar el mapa

Se pasan las propiedades del objeto mapa

Page 20: S3 2016 taller-javascript-v2

Google API Key

• Google API Key• Si el número de llamadas que van a hacer nuestros

mapas es muy alto, debido al tráfico de la página, debe utilizarse una Google API Key

• Para dar de alta el proyecto debes acceder, con tu cuenta de Google, al Google Developers Console

<script src="http://maps.googleapis.com/maps/api/js?key=YOUR_KEY"></script>

Page 21: S3 2016 taller-javascript-v2

Tipos de mapas

• Tipos de mapas:• Roadmap• Satellite• Hybrid• Terrain

Page 22: S3 2016 taller-javascript-v2

Overlays sobre mapas

• Los overlays son capas superpuestas al mapa.• Pueden ser:

• Marcadores (marker)• Líneas (polyline)• Polígonos (polygon)• Círculos y rectángulos (circle – rectangle)• Ventanas de información (info windows)• Capas customizadas (custom overlays)

1 marcador varios Animado + imagen

Page 23: S3 2016 taller-javascript-v2

Aplicaciones útiles

0 Para localizar las coordenadas del lugar que necesitas Google Maps utiliza GD (Grados decimales) Coordenadas-GPS

0Datos cartográficos Bancos de ficheros de shapefiles: KML, vectoriales… Global Administrative Areas

Page 24: S3 2016 taller-javascript-v2

InicioCartoDB

• CartoDB es una aplicación para mapear datos.

• Carga datos en diferentes formatos

• Permite un alto nivel de edición y personalización

• Dispone de una API abierta

Page 25: S3 2016 taller-javascript-v2

VisualizaciónCartoDB• Pasos:

1. Darse de alta en CartoDB2. Descargar los

datos de FOGASA3. Crear un nuevo Dataset

en CartoDB importando el CSV

4. Descargar el fichero kmz de España de nivel 2

5. Abrir el dataset con los datos de FOGASA y unir con los de las provincias de España (provincia – name)

6. Realizar los ajustes en el mapa

Vamos a crear un mapa con datos de FOGASA

Page 26: S3 2016 taller-javascript-v2

PreparaciónCartoDB

• CartoDB ofrece, además del entorno gráfico para crear visualizaciones, una librería denominada CartoDB.js

• Esta librería nos permite interactuar con el servicio:• Conectando con las visualizaciones que ya tenemos• Creando nuevas visualizaciones• Customizando la visualización• Accediendo o consultando los datos desde el

navegador

Page 29: S3 2016 taller-javascript-v2

PreparaciónMapbox

https://www.mapbox.com

Page 30: S3 2016 taller-javascript-v2

PreparaciónMapbox

Crear un mapa desde el editor

Page 31: S3 2016 taller-javascript-v2

Librería Mapbox.jsEfectos

https://www.mapbox.com/mapbox.js/api/v2.2.4/

• Zooming• Animación• Vídeo Tooltips

Page 32: S3 2016 taller-javascript-v2

Google Chart Chart.js

Highcharts morris.js

Librerías para datos (Dataviz)

Page 33: S3 2016 taller-javascript-v2

PreparaciónGoogle Charts

https://developers.google.com/chart/

Page 34: S3 2016 taller-javascript-v2

¿Cómo funciona?Google Charts

Google JSAPI API

Librería de visualización de Google

Librería del Chart

concretoVisualización

Page 35: S3 2016 taller-javascript-v2

Charts – Pasos para crear una visualización1. Cargando las librerías

El primer paso es cargar en el <head> las librerías de Google

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script><script type="text/javascript">    google.charts.load('current', {packages: ['corechart']});    google.charts.setOnLoadCallback(drawChart);</script>

El script hace una llamada a la API de Google para cargar sus funcionalidades

Ahora le indica al Google Loader que cargue la visualización

correspondiente

Corechart carga:bar, column, line, area, stepped area, bubble, pie, donut, combo, candlestick, histogram, scatter

Page 36: S3 2016 taller-javascript-v2

Charts – Pasos para crear una visualización2. Preparando los datos

La creación de Chart requiere que los datos sean incluidos mediante una clase de JavaScript: google.visualization.DataTable

La clase está definida en la librería de visualización de Google

La tabla de datos corresponde a una tabla similar a esta

Page 37: S3 2016 taller-javascript-v2

Se crea la tabla y el array de datos

Se crea la variable

Se definen las columnas

Se cargan datos en celdas

Charts – Pasos para crear una visualización2. Preparando los datos

Page 38: S3 2016 taller-javascript-v2

Se definen las opciones del chart

Charts – Pasos para crear una visualización3. Personalizando el Chart

Page 39: S3 2016 taller-javascript-v2

Para cada Chart podemos personalizar diferentes elementos como: Título, Color, grosor de línea, relleno de fondo, etc. Incluir elementos: títulos de los ejes, etc.

Las opciones se presentan como pares name.valueLas opciones pasan los valores al chart mediante el

método draw()Cada chart posee los pares adecuados para la

customización de ese tipo de visualización

Charts – Pasos para crear una visualización3. Personalizando el Chart

Page 40: S3 2016 taller-javascript-v2

Pie hole Exploding Slide

Charts – Pasos para crear una visualización3. Personalizando el Chart

Page 41: S3 2016 taller-javascript-v2

Uso de HTML en Tooltips Charts dentro de Tooltips

Charts – Pasos para crear una visualización3. Personalizando el Chart

Page 42: S3 2016 taller-javascript-v2

Charts – Pasos para crear una visualización4. Dibujando el Chart

Con los datos y las opciones, se instancia el chart

Cada tipo de Chart posee su propia clase para instanciar la figura correspondiente: PieChart usa la clase: google.visualization.PieChart BarChart usa la clase: google.visualization.BarChart

Page 43: S3 2016 taller-javascript-v2

Por último, se dibuja el resultado final en el body

Charts – Pasos para crear una visualización4. Dibujando el Chart

<body>//Div that will hold the pie chart    <div id="chart_div" style="width:400; height:300"></div>  </body>

Page 45: S3 2016 taller-javascript-v2

PreparaciónFusion Tables

• Ejemplos: https://sites.google.com/site/fusiontablestalks/stories

• Búsqueda de tablas públicas: http://research.google.com/tables

Page 46: S3 2016 taller-javascript-v2

Creación de tablas fusionadas 1Fusion Tables

Vamos a crear un mapa de de intensidad con límites personalizados:• Abre el mapa de los distritos de elección de congresistas de los

Estados Unidos, y haz una copia para poder editar• Abre la hoja de cálculo de las estadísticas de calefacción de

hogares, y haz una copia• Combina las dos tablas en una sola:

• En la tabla Household Heating statistics haz clic en File > Merge. • Copia la URL del fichero Congressional boundaries table y pégala en el

cuadro "Or paste a web address here. Haz clic en Next.• Especifica la columna que ambas tablas tienen en común. En este caso:

• En la izquierda selecciona: "Two-digit District"• En la derecha: "id”

• Haz clic para mezclar ambas tablas.

Page 47: S3 2016 taller-javascript-v2

Creación de tablas fusionadas 2Fusion Tables

Ahora vamos a personalizar el mapa:• Selecciona la opción “Map of shape”• Pulsa en Tools>Change map• En Feature map>Change feature styles, selecciona la opción “Fill

color>Buckets”• Selecciona la opción: “Divide into x buckets” y selecciona 4, por

ejemplo. Ajusta los elementos de color.• Ajusta cualquier otro elemento.

• Publica tu tabla.

Page 49: S3 2016 taller-javascript-v2

Dataset Publishing LanguageDSPL

DSPL es un formato de datos y metadatos diseñado para crear visualizaciones interactivas en Google Public Data Explorer, a partir de datasets.

Características:• Usa datos existentes en ficheros XML o CSV.• Mapeable• Abierto• Multi-lenguaje

• Tutorial

Page 50: S3 2016 taller-javascript-v2

TareaGPDE

Vamos a utilizar nuestros propios datos:1. Accede a los dataset de ejemplo en DSLP2. Descarga un paquete ZIP de datos3. Accede al administrador de Dataset de GPDE y

sube el zip4. Carga los datos y crea una visualización a partir de

ellos.

Page 51: S3 2016 taller-javascript-v2

PreparaciónCloud Highcharts

http://cloud.highcharts.com/

Page 52: S3 2016 taller-javascript-v2

TareaCloud Highcharts

http://cloud.highcharts.com/

0Vamos a trabajar con Highcharts Cloud1. Accede a http://cloud.highcharts.com/2. Date de alta en el servicio web3. Crea un nuevo gráfico

• Selecciona uno de la librería• Prueba con los datos de ejemplo

4. Recupera una tabla de datos e impórtala vía csv o mediante Google Spreadsheet

5. Comprueba las opciones de personalización6. Expórtala y comprueba el resultado.

Page 54: S3 2016 taller-javascript-v2

TareaHighcharts

http://cloud.highcharts.com/

Vamos a trabajar ahora con la librería Highcharts 1. Accede a http://www.highcharts.com/demo/2. Selecciona un gráfico y ábrelo en jsFiddle3. Modifica los datos4. Prueba a cargar los diferentes temas:

<script src="http://www.highcharts.com/js/themes/gray.js"></script> <script

src="http://www.highcharts.com/js/themes/dark-blue.js"></script> <script src="http://www.highcharts.com/js/themes/dark-green.js"> </script><script src="http://www.highcharts.com/js/themes/grid.js"> </script><script

src="http://www.highcharts.com/js/themes/skies.js"></script> Podrías ajustar los temas editando los ficheros js

Page 55: S3 2016 taller-javascript-v2

TareaHighcharts

Veamos ahora cómo crear un Highchart desde cero:

1. Carga la librería highcharts.js y alguna librería como jQuery, MooTools o Prototype.

2. Añade un div en el body de la página

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script><script src="http://code.highcharts.com/highcharts.js"></script>

<div id="container" style="width:100%; height:400px;"></div>

…/…

Page 56: S3 2016 taller-javascript-v2

TareaHighcharts…/…

3. Inicializa el chart añadiendo el script.

$(function () { $('#container').highcharts({ chart: { type: 'bar' }, title: { text: 'Fruit Consumption' }, xAxis: { categories: ['Apples', 'Bananas', 'Oranges'] }, yAxis: { title: { text: 'Fruit eaten' } }, series: [{ name: 'Jane', data: [1, 0, 4] }, { name: 'John', data: [5, 7, 3] }] });});

Ejemplo simple

Ejemplo con opciones

Page 57: S3 2016 taller-javascript-v2

TareaHighcharts…/…

4. Añadiendo estilos. • Podemos adaptar los estilos mediante Highcharts.setOptions

$(function() { Highcharts.setOptions({ chart: { backgroundColor: { linearGradient: [0, 0, 500, 500], stops: [ [0, 'rgb(255, 255, 255)'], [1, 'rgb(240, 240, 255)'] ] }, borderWidth: 2, plotBackgroundColor: 'rgba(255, 255, 255, .9)', plotShadow: true, plotBorderWidth: 1 } });

Ejemplo paraModificar estilos

Page 58: S3 2016 taller-javascript-v2

TareaHighcharts…/…

5. Añadiendo temas. • Highchart tiene predefinidos unos temas que se

pueden cargar mediante un script. • Deben estar subidos en nuestra web.• Y podemos crear nuestros propios temas.

<script src="http://comunicaciondigital.esy.es/files/highchart/js/themes/dark-blue.js"></script>

Ejemplo paraprobar los temas

Page 59: S3 2016 taller-javascript-v2

Qué es• Librería JS que permite

crear gráficos asociada con jQuery y Raphael

Para qué se utiliza• Creación de gráficos

estándarDemos• Line & Area Charts | Bar Chart |

Donuts Charts

Morris.js

http://morrisjs.github.io/morris.js/

Page 60: S3 2016 taller-javascript-v2

TareaMorris.js

Vamos a practicar con Morris.js1. Accede a http://morrisjs.github.io/morris.js/ 2. Crea un fichero html3. Enlaza los js y css4. Crea el div para cargar el gráfico5. Adjunta el script6. Comprueba las opciones de parametrización7. Prueba con el resto de gráficas

Page 62: S3 2016 taller-javascript-v2

LibreríaChartist.JS

0Chartist.JS es una librería para crear Chart

0Altamente customizable0Con gráficos

responsivos 0Librería de ejemplos

• Avanced Smil Animations

• Animating Donut

https://gionkunz.github.io/chartist-js/getting-started.html

Page 65: S3 2016 taller-javascript-v2

Qué es• Librería JS para

manipular documentos basados en datos.

Para qué se utiliza• Visualizaciones complej

asEjemplos visualizaciones• China manufacture• Similar song Networks

D3.js

http://d3js.org/

Page 66: S3 2016 taller-javascript-v2

Para qué sirve y qué haceD3.js

Permite obtener datos de cualquier elemento del DOM y aplicarle transformaciones en el documento.

Sobre un mismo conjunto de datos permite realizar varias transformaciones. Por ejemplo, sobre un array podemos:

• Crear una tabla

• Generar un gráfico interactivo en SVG Y de una manera muy flexible y rápida.

Page 67: S3 2016 taller-javascript-v2

Para qué sirve y qué haceD3.js

Utiliza una sintaxis simplificada de JS para acceder a los selectores del DOM: W3C Selectors API

JS

D3.js

Page 70: S3 2016 taller-javascript-v2

Qué es• Librería JS que permite

crear seis tipos de gráficos

Para qué se utiliza• Creación de gráficos

vectorialesDemos• Ejemplos

Chart.js

http://www.chartjs.org/

Page 71: S3 2016 taller-javascript-v2

LibreríaSigma.JS

0Sigma.JS es una librería para crear dibujo gráfico

0Especializado en creación de gráficos de redes

http://sigmajs.org/

Page 72: S3 2016 taller-javascript-v2

Pictográficas Three.js

Chartis.js

Librerías para Imágenes

Page 73: S3 2016 taller-javascript-v2

Librerías pictográficasQué son

Librerías pictográficas• Las librerías pictográficas web son colecciones de iconos

que pueden cargarse vía web en nuestro proyecto mediante un enlace.

• Las tres principales son:

• Font Awesome Icons

• Bootstrap Icons

• Google Icons

Page 74: S3 2016 taller-javascript-v2

Librerías pictográficasFont Awesome

Font Awesome• Es una colección libre de más de 600 iconos.

• Permite control CSS, sin manejo de JS

Page 75: S3 2016 taller-javascript-v2

Qué es• Librería JS que permite

crear gráficos vectoriales (SVG) basado en el uso de canvas

Para qué se utiliza• Creación de gráficos

vectoriales: mapasDemos• http://raphaeljs.com/

Raphael.js

http://raphaeljs.com/

Page 77: S3 2016 taller-javascript-v2

Es una especificación que permite mostrar gráficos 3D en navegadores web.• Sin plugins (requiere que la plataforma soporte OpenGL 2.0

Los navegadores más actuales)• Es una API para Javascript • Trabaja directamente con el GPU (Graficos

acelerados por harware), por lo que requiere librerías para agilizar su implementación• Tree.js es la más popular

0 Ver presentación

WebGL

Page 81: S3 2016 taller-javascript-v2

Es una comunidad de desarrolladores 3D Ejemplos interesantes utilizables

Sketchfab

https://sketchfab.com

Page 83: S3 2016 taller-javascript-v2

Por si fuera poco…

https://www.javascripting.com

Page 84: S3 2016 taller-javascript-v2

Animate.css ScrollReveal

Librerías para animaciones

Page 85: S3 2016 taller-javascript-v2

Animación con CSSAnimate.css

Animate.css es una sencilla colección de estilos en CSS3 de animación

Vemos un ejemplo Y cambiamos el

modelo de animación

http://daneden.github.io/animate.css/

Page 86: S3 2016 taller-javascript-v2

ArcGIS: Storymap Tools Knightlab

Otras aplicaciones

Page 87: S3 2016 taller-javascript-v2

Visual Investigative ScenariosVIS

0VIS es una herramienta online, apoyada por el International Press Institute, que permite crear mapas visuales de investigación en los que se pueden relacionan los diferentes sujetos, entidades, empresas, etc.

0Facilita una forma sencilla de ir organizando las relaciones, con indicaciones de localización geográfica, entre las entidades que se van incluyendo, de forma que se va generando un mapa de relaciones que permita descubrir cuestiones interesantes entre ellas.

0Demo

https://vis.occrp.org/

Page 88: S3 2016 taller-javascript-v2

ArcGISPresentación

http://www.arcgis.com/home/index.html

Page 89: S3 2016 taller-javascript-v2

ArcGISStory Maps

Story Maps es una aplicación de ArcGIS que permite crear potentes visualizaciones basadas en mapas narrativizados.

1. Piensa tu historia 2. Integra el contenido 3. Construye tu mapa

4. Configura tu relato 5. Ajústalo 6. Publica tu historia

Page 90: S3 2016 taller-javascript-v2

ArcGISStory Maps

Story Maps permite crear tres tipos de Storytelling Apps

Recorridos secuenciales• Crear un Mapa

Tour• Ver ejemplos

Puntos de interés

Comparar dos mapas

Ayuda y Tutoriales

Page 91: S3 2016 taller-javascript-v2

ArcGISStory Maps

Story Maps permite crear tres tipos de Storytelling Apps

Recorridos secuenciales• Crear un Mapa

Tour• Ver ejemplos

Puntos de interés

Comparar dos mapas

Page 94: S3 2016 taller-javascript-v2

PreparaciónTimelineJS Knightlab

Page 95: S3 2016 taller-javascript-v2

ParametrizaciónTimelineJS Knightlab

Se pueden cambiar algunos elementos básicos. Su modificación cambia los parámetros en el iframe.

Page 96: S3 2016 taller-javascript-v2

ParametrizaciónTimelineJS Knightlab

Pero, además, podemos ajustar cualquier parámetro de la presentación de los elementos, directamente en la hoja de cálculo, introduciendo código html y css

0<div style="font-family:'Trebuchet MS'; font-size:48px; font-weight: bold; color:red">HTTP</div>

Page 97: S3 2016 taller-javascript-v2

TareaTimeline

Vamos a crear una línea de tiempo y a personalizarla:

1. Accede a TimelineJS2. Crea tus datos en un Google Spreadsheet.3. Impórtalos a TimelineJS.4. Configura las opciones de presentación en

Timeline.5. Configura las opciones de presentación mediante

código html y css en las celdas de Google Spreadsheet.

Page 98: S3 2016 taller-javascript-v2

PageOneX

http://pageonex.com/

Page 99: S3 2016 taller-javascript-v2

Otros recursos

Page 100: S3 2016 taller-javascript-v2

Rss mapper

http://www.rssmapper.com/

Page 101: S3 2016 taller-javascript-v2

Localizar coordenadas

http://www.maps.pixelis.es/

Page 102: S3 2016 taller-javascript-v2

Taller de fundamentos aplicados de JAVASCRIPT3Manuel Gértrudix – Sergio Álvarez