seminario jquery, html5 y wicket

39
Seminario #1 jQuery HTML 5 Apache Wicket Adrià Solé Orrit Ricardo Herrera Gil

Upload: adria-sole-orrit

Post on 13-Jan-2015

967 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Seminario jquery, html5 y wicket

Seminario #1jQueryHTML 5

Apache Wicket

Adrià Solé OrritRicardo Herrera Gil

Page 2: Seminario jquery, html5 y wicket

Índice

jQuery1. ¿Qué es?2. Instalación3. Introducción a Javascript4. jQuery

○ Sintaxis

○ Eventos

○ Manipulación del DOM

○ Efectos

○ Ajax

HTML 51. ¿Qué es?2. Nuevas características

○ Drag & Drop○ Geolocalización○ Vídeo & Audio○ WebSockets

1

Page 3: Seminario jquery, html5 y wicket

Índice

Apache Wicket1. Introducción2. El "Component triad" de Wicket3. Requisitos4. ¿Cómo crear un proyecto?5. Ejemplos:

○ Hello World○ Link Counter○ Link Counter (Ajax)○ Bus

2

Page 4: Seminario jquery, html5 y wicket

jQueryWrite less, do more

Page 5: Seminario jquery, html5 y wicket

1. ¿Qué es?

● Librería que facilita el uso de JavaScript.○ JavaScript: lenguaje interpretado diseñado con el objetivo de

añadir interactividad a una página web.● El código se incrusta en el documento HTML y es ejecutado por

el navegador.

● Características principales:○ Gestión de eventos HTML.

○ Manipulación de documentos HTML.

○ Manipulación de estilos (CSS), efectos y animaciones.

○ AJAX

● Alto grado de compatibilidad con navegadores de escritorio y móviles.

4

Page 6: Seminario jquery, html5 y wicket

2. Instalación

● La librería jQuery es un archivo JavaScript.○ Para utilizarla, tenemos que referenciarla desde el documento

HTML:

● Puede descargarse desde la web oficial o bien incluirla a través del repositorio de Google o Microsoft:

5

<head><script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script></head>

<head><script src="jquery.js"></script></head>

Page 7: Seminario jquery, html5 y wicket

3. Introducción a JavaScript

● Declaración de variables:

● Declaración de funciones:

● Declaración de objetos

6

/* No se especifica el tipo*/

var myInt = 1;var myString = 'Hola mundo';var myArray = [ 'Hola', 'mundo' ];

var myFunction = function(saludo, persona) { var texto = saludo + ', ' + persona; return texto;};

var myObject = { myName: 'Ricardo', sayHello: function() { var texto = 'Hola me llamo ' + this.myName; return texto; }};

Page 8: Seminario jquery, html5 y wicket

3. Introducción a JavaScript

<html> <body> <p>¿Cómo se llaman?</p> <button onclick="mostrarNombres()">Solución</button> <p id="demo"></p> <script> function mostrarNombres(){ var myObject1 = { nombre: "Ricardo", sayHello: function() { var texto = 'Mi nombre es ' + this.nombre + '.<br>'; return texto; } }; var myObject2 = { nombre: "Adrià", sayHello: function() { var texto = 'Mi nombre es ' + this.nombre + '.<br>'; return texto; } }; var seminaristas = [ myObject1, myObject2 ]; var salida = ""; for (var i = 0, limit = 2; i < limit; i++) { salida = salida + seminaristas[i].sayHello(); } document.getElementById("demo").innerHTML = salida ; } </script> </body></html>

7

Page 9: Seminario jquery, html5 y wicket

4. jQuery: sintaxis

● $(selector).action()○ $: indicador de comando jQuery

○ (selector): permite seleccionar y manipular elementos HTML.

○ action(): acción jQuery a realizar en el elemento.

● Ejemplos:○ $(this).hide(): oculta el elemento actual.

○ $("p").hide(): oculta todos los elementos con el tag <p>.

○ $(".test").hide(): oculta todos los elementos con class="test".

○ $("#test").hide(): oculta el elemento con id="test".

8

Page 10: Seminario jquery, html5 y wicket

4. jQuery: eventos

● La interacción del usuario con el navegador genera eventos.○ jQuery ofrece un conjunto de métodos para su gestión.

● El evento más conocido es el Document Ready y se genera cuando se ha cargado el documento HTML:○ Es recomendable el uso del método ready() para evitar la

ejecución de código hasta que el documento esté listo.

9

<html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script> $(document).ready(function(){ // jQuery methods go here... }); }); </script> </head><body></body></html>

Page 11: Seminario jquery, html5 y wicket

4. jQuery: manipulación del DOM

● jQuery cuenta con métodos para manipular y modificar los elementos del documento HTML:○ Establecer o devolver el valor de un elemento: text(), html(),

val().○ Añadir contenido nuevo: append(), before(), prepend(), after()

○ Eliminar elementos o contenido existente: empty(), remove().

○ Manipulación de estilos: addClass(), removeClass(), toggleClass().

10

Page 12: Seminario jquery, html5 y wicket

4. jQuery: manipulación del DOM

11

<html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script> $(document).ready(function(){ $("#box").click(function(){ $("body").prepend("<div id='div1'></div>"); $("#div1").addClass("caja");}); $("#text").click(function(){ $("#div1").append("<p>Hola mundo!</p>");}); $("#vaciar").click(function(){ $("#div1").empty();}); $("#borrar").click(function(){ $("#div1").remove();}); }); </script> <style type="text/css"> .caja{ height:100px; width:300px; border:1px solid black; background-color:yellow; } </style> </head> <body> <button id="box">Añadir caja</button> <button id="text">Añadir texto</button> <button id="vaciar">Vaciar caja</button> <button id="borrar">Borrar caja</button> </body></html>

Page 13: Seminario jquery, html5 y wicket

4. jQuery: efectos

● jQuery proporciona varios métodos para animar una página web.

● Los métodos mas conocidos son:○ show() & hide(): muestran y ocultan un elemento.

○ fadeIn() & fadeOut(): cambian la opacidad de un elemento de forma animada.

○ slideDown() & slideUp(): pliegan y despliegan un elemento de forma animada

○ slideToggle(): alterna entre los métodos slideDown() y slideUP().

12

Page 14: Seminario jquery, html5 y wicket

4. jQuery: efectos

13

<html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script> $(document).ready(function(){ $("#flip").click(function(){ $("#panel").slideToggle("slow"); }); }); </script> <style type="text/css"> #panel,#flip { padding:5px; text-align:center; background-color:#e5eecc; border:solid 1px #c3c3c3; } #panel { padding:50px; display:none; } </style> </head> <body> <div id="flip">Click me!</div> <div id="panel">Hola Mundo!</div> </body></html>

Page 15: Seminario jquery, html5 y wicket

4. jQuery: AJAX

● AJAX permite actualizar (asíncronamente) partes de la web sin tener que recargarla por completo.

● En la librería jQuery existen métodos AJAX que permiten solicitar documentos de texto, HTML, XML o JSON a un servidor remoto.

● El método principal empleado para realizar peticiones AJAX es el $.ajax(settings).○ settings hace referencia a un conjunto de parejas clave/valor

que configuran la petición.

14

Page 16: Seminario jquery, html5 y wicket

4. jQuery: AJAX

15

<html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script> $(document).ready(function(){ $("button").click(function(){ $.ajax({ url: "http://localhost/test.html", success: function(result){ $("div").html(result); } }); }); }); </script> </head> <body> <div><h2>AJAX va a cambiar este texto</h2></div> <button>Cambiar</button> </body></html>

Page 17: Seminario jquery, html5 y wicket

HTML 5The new HTML Standard

Page 18: Seminario jquery, html5 y wicket

1. ¿Qué es?

● Será el nuevo estándar de HTML.○ JavaScript: lenguaje interpretado diseñado con el objetivo de

añadir interactividad a una página web.● El código se incrusta en el documento HTML y es ejecutado por

el navegador.

● Características principales:○ Nueva características basadas en HTML,CSS,DOM,Javascript.

○ Reduce la necesidad de plugins externos (como Flash).

○ Mejor gestión de errores.

○ Más etiquetas para reducir los scripts.

● La mayoría de navegadores soportan muchas de sus etiquetas y APIs: ○ http://html5test.com/

17

Page 19: Seminario jquery, html5 y wicket

2. Nuevas características

● Nuevos elementos○ Semánticos/Estructurales: <time>,<figure>, etc.

○ Elementos media: <audio>,<video>,<track>, etc.

○ Elemento <canvas>.

○ Elementos de formulario: <datalist>,<keygen>,<output>.

● Geolocalización○ Obtener la posición geográfica del usuario (con su permiso).

● Drag&Drop○ Coger un objeto y dejarlo en una localización distinta.

● Canvas○ Dibujar gráficos desde la página web.

18

Page 20: Seminario jquery, html5 y wicket

2. Nuevas características

● Vídeo & Audio○ Con la etiqueta <video> y <audio> nos ahorramos la necesidad

de plugins externos para incrustar video/audio en la web.

● Almacenamiento web○ Páginas web pueden guardar los datos de manera local en el

navegador del usuario.

● SVG○ Soporte para Scalable Vector Graphics (gráficos definidos en

formato XML).

● Aplicación cache○ La aplicación web se almacena en caché, accesible sin conexión

a internet cuando ya ha sido almacenada en caché.

19

Page 21: Seminario jquery, html5 y wicket

2. Nuevas características

● Web Worker○ Javascript en background.

● Server-Sent Events○ La página web recibe actualizaciones automáticas del servidor.

○ Se requiere un servidor capaz de enviar actualizaciones de datos.

20

Page 22: Seminario jquery, html5 y wicket

2. Drag & Drop

● Hacer que un elemento sea arrastrable.

● Definir lo que se va a arrastrar.○ dataTransfer.setData() establece el tipo de datos y el valor del

elemento arrastrable.

● Definir dónde se va a soltar.● Soltar.

21

<img draggable="true">

function drag(ev){ev.dataTransfer.setData("Text",ev.target.id);}

event.preventDefault()

function drop(ev){ev.preventDefault();var data=ev.dataTransfer.getData("Text");ev.target.appendChild(document.getElementById(data));}

Page 23: Seminario jquery, html5 y wicket

2. Drag & Drop: ejemplo

22

<!DOCTYPE HTML><html><head><style type="text/css">#div1 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;}</style><script>function allowDrop(ev) { ev.preventDefault(); }

function drag(ev) { ev.dataTransfer.setData("Text",ev.target.id);}

function drop(ev){ev.preventDefault();var data=ev.dataTransfer.getData("Text");ev.target.appendChild(document.getElementById(data));}

</script> </head> <body><p>Drag the image into the rectangle:</p><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div><br><img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69"></body></html>

Page 24: Seminario jquery, html5 y wicket

2. Geolocalización

● El método getCurrentPosition() devuelve la posición del usuario.○ En este ejemplo se devuelven las coordenadas geográficas.

23

<!DOCTYPE html><html><body><p id="demo">Click the button to get your coordinates:</p><button onclick="getLocation()">Try It</button><script>var x=document.getElementById("demo");function getLocation() { if (navigator.geolocation){ navigator.geolocation.getCurrentPosition(showPosition); } else{ x.innerHTML="Geolocation is not supported by this browser."; } }function showPosition(position) { x.innerHTML="Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude; }</script></body></html>

Page 25: Seminario jquery, html5 y wicket

2. Vídeo & Audio

● Sin plugins externos con los tags <video> y <audio>.○ Vídeo

○ Audio

24

<!DOCTYPE html><html><body>

<video width="320" height="240" controls="controls"> <source src="movie.mp4" type="video/mp4"><source src="movie.ogg" </video>

</body></html>

<!DOCTYPE html><html><body>

<audio controls="controls"> <source src="horse.mp3" type="audio/mpeg"></audio>

</body></html>

Page 26: Seminario jquery, html5 y wicket

2. WebSockets

<!DOCTYPE HTML>

<html>

<body>

<script>

if ("WebSocket" in window) {

var ws = new WebSocket("ws://echo.websocket.org"); //servidor que hace de ECHO

ws.onopen = function() {

/* Web Socket está abierto. Se puede enviar ldatos con el método send().*/

ws.send("Hola mundo");

};

ws.onmessage = function (evt) { var received_msg = evt.data; alert(evt.data); };

ws.onclose = function() { /* websocket cerrado.*/alert("WebSocket Closed!"); };

}else{

/* el navegador no soporta Websocket */

alert("Websocket is not supported in your browser");

}

</script>

</body>

</html>

25

Page 27: Seminario jquery, html5 y wicket

Apache WicketA Java web application framework

Page 28: Seminario jquery, html5 y wicket

1. Introducción

● Framework para diseño de aplicaciones web:○ Orientado a componentes.

○ Implementación del diseño mediante plantillas de HTML puro

○ Implementación del comportamiento a través de Java:● Stateful programming.

● Componentes vs. Objetos○ Ambos son módulos de software reusables.

○ Componente:● Encapsulan procesos: funcionalidades end-user.● Sólo requieren una configuración inicial para comenzar a

funcionar.

○ Objeto:● Orientados a la encapsulación de datos.● Building-blocks: no hacen mucho por separado.

27

Page 29: Seminario jquery, html5 y wicket

2. El "Component triad" de Wicket

● HTML markup: ○ Contiene la mayor parte de la información que se muestra al usuario.

○ Relación tag-componente a través del atributo wicket:id.

● Java components: cómo y cuándo se mostrarán ciertos datos.

● Model: qué datos obtener y dónde conseguirlos.28

Page 30: Seminario jquery, html5 y wicket

3. Requisitos

● Apache Tomcat 7● Eclipse IDE for Java EE Developers● Plugin Maven para Eclipse: m2eclipse

○ Help > Install New Software: ● Add: http://download.eclipse.org/technology/m2e/releases

29

Page 31: Seminario jquery, html5 y wicket

4. ¿Cómo crear un proyecto?

● New Project > Maven Project● Se recomienda crearlo a partir del arquetipo.

30

Page 32: Seminario jquery, html5 y wicket

4. ¿Cómo crear un proyecto?

● Seleccionar arquetipo de la comunidad Apache Wicket.

31

Page 33: Seminario jquery, html5 y wicket

4. ¿Cómo crear un proyecto?

32

Page 34: Seminario jquery, html5 y wicket

5. Ejemplos: Hello World

33

Page 35: Seminario jquery, html5 y wicket

5. Ejemplos: Link Counter

34

Page 36: Seminario jquery, html5 y wicket

5. Ejemplo: Link Counter (Ajax)

35

Page 37: Seminario jquery, html5 y wicket

5. Ejemplo: Bus

36

public class HomePage extends WebPage {private int counter=0;public HomePage() {

add(new AjaxFallbackLink<Void>("linkAjax2"){

public void onClick(AjaxRequestTarget target){ counter++; if (target!=null) send(getPage(),Broadcast.BREADTH,target); } }); add(new CountLabel("counter",new PropertyModel<Integer>(this,"counter"))); add(new CountLabel("count",new PropertyModel<Integer>(this,"counter"))); }

public class CountLabel extends Label{public CountLabel(String id, IModel <Integer> model){

super(id,model);setOutputMarkupId(true);

}@Overridepublic void onEvent(IEvent <?>event){

super.onEvent(event);if (event.getPayload() instanceof AjaxRequestTarget){

AjaxRequestTarget target = (AjaxRequestTarget) event.getPayload();target.add(this);

}}

}}

Page 38: Seminario jquery, html5 y wicket

The endEnjoy it!

Page 39: Seminario jquery, html5 y wicket

Referencias

38

● w3schools. "jQuery Tutorial w3schools" [en línea].http://www.w3schools.com/jquery/ [consulta 9 octubre 2012]

● Rebecca Murphey. jQuery Fundamentals. [en línea].http://jqfundamentals.com [consulta 9 octubre 2012]

● w3schools: "HTML5 Tutorial w3schools" [en línea] http://www.w3schools.com/html5/ [consulta 9 octubre 2012]

● Martijn Dashorst, Eelco Hillenius. Wicket in action. Greenwich: CT, 2009.