SlideShare una empresa de Scribd logo
Crono: mini-chat
2/22


Visión global

   En esta nueva versión de cRono vamos a añadirle un mini-chat
   Haremos uso intensivo de Javascript, CSS y AJAX
3/22


Algunos requisitos del mini-chat

   Al hacer doble click sobre un jugador conectado se me abre una ventana
    de mini-chat con ese jugador
   NO puedo abrir un mini-chat conmigo mismo
   NO puedo abrir un mini-chat con un jugador con el que ya estoy
    chateando
   Solo se permite un máximo de 3 mini-chats simultáneos
   El servidor hará de almacén de conversaciones
   Comunicaremos los clientes con el servidor vía AJAX
   Cada jugador consultará de forma periódica si hay un mensaje para él
    vía AJAX
   Una vez ha descargado un mensaje, se marcará en el servidor como
    leído, de modo que NO se vuelva a enviar al jugador
Fase 1: los 6 pasos
5/22

PASO 1: Devolver lista de jugadores conectados
separados por ;

   El servidor debe olvidarse de la capa de presentación, así que
    devolverá simplemente la lista de jugadores como una cadena de
    texto en la que separamos por ; los login
   Modifica los métodos Jugador.toString y JugadoresList.toString
   Asegúrate que este paso funciona
6/22

PASO 2 – cliente: panel de conectados, una capa por
cada jugador

   Desde el cliente, cuando recibes en AJAX la lista de jugadores
    conectados, vuélcala a un array
   Para ello utiliza el método split
   Crea una rutina crearUnaCapaPorJugador(vectorJugadores)
    que cree dinámicamente código HTML en el panel de jugadores
    conectados
   Esta rutina devuelve el código HTML que se inserta en el inner del
    panel de conectados
   Prueba este paso antes de seguir
7/22


PASO 3: Evento doble click sobre jugador

   Captura el evento doble click sobre un jugador conectado
   Hazlo sobre la capa del jugador
   Asegúrate de que este paso funciona simplemente mostrando un
    alert
8/22


PASO 4: registrar número de chats establecidos

   Llegados a este punto nuestro cRono ya reacciona a doble click sobre un jugador conectado
   La rutina que maneja el doble click llámala agregarVentanaChat(who)
   who representa el alias ó login del jugador contra el que he abierto el mini-chat
   Todos el código asociado al mini-chat alójalo en un fichero llamado chat.js
   Crea una nueva capa chats que alojará todas las ventanas de mini-chat.
   En este paso, esta capa contendrá simplemente el número de chats abiertos
   Crea una variable global nchats para llevar esta cuenta
   Actualiza esta cuenta en tu función que captura el doble-click sobre un jugador
   Muestra el valor de nchats en la capa de chats.
9/22


PASO 5: controla la apertura de chats

   Evita que el jugador pueda abrir un mini-chat consigo mismo
   Evita que el jugador pueda abrir más de 3 mini-chats
   Evita que el jugador pueda abrir un chat con un jugador con el que
    ya está hablando
   Para ello, crea un array chats_with que contenga una entrada con
    el login (ó alias) del jugador con el que inicia un chat
   Antes de abrir un chat, comprueba que ese jugador NO esté ya en
    la lista de chats_with
10/22


  PASO 6: Ventana de chat básica


   tituloChat
                                                       <span
                     <span tituloChat...>
                            <DIV tituloChat...>   botoneraChat...>

conversacionChat
  ventanaChat


                   chats
  mensajeChat
Posicionamiento CSS en 10 pasos
12/22


Fuente

   Este mini-tutorial es una traducción de BarelyFitz Designs
   En esta URL tienes la fuente original:
    Enlace al original
13/22


1. position: static

   Este es el posicionamiento por defecto de cualquier elemento
   Indica que NO se le asigna una posición, sino simplemente se
    ubica “donde le toque”
   Normalmente NO se indica explícitamente, salvo para modificar el
    posicionamiento de un objeto que previamente hemos establecido
14/22


2. position: relative

   Nos permite establecer top - bottom y left - right
   De esta manera lo desplazamos de la ubicación que le correspondería si
    no hubiéramos modificado/variado su posición




   El div-1 se ha desplazado a la izquierda de donde le tocaba
   El siguiente elemento (div-after) se coloca donde le hubiera tocado, de
    modo que queda detrás de div-1
15/22


3. position: absolute

   Cuando establecemos position: absolute, el elemento se elimina del
    documento y se ubica exactamente donde le indiquemos.
   Vamos a mover div-1a al top de la página:




   Hemos colocado el div-1a en una posición absoluta de la página
   Nos podría interesar en una posición absoluta dentro de otro div, y aquí es
    donde usaremos la combinación relative-absolute
16/22


4. position:relative + position:absolute

   Si establecemos position:relative para div-1, cualquier elemento dentro de
    él será posicionado de forma relativa a su posición
   Ahora, al div-1a, dentro de div-1, le indicamos position:absolute, lo podemos
    colocar en el top de div-1
17/22


5. dos columnas absolute




   Una ventaja del posicionamiento absoluto es que podemos definir los
    elementos en cualquier orden en la página y se ubicarán en la posición
    deseada...
   ...con independencia de cuál declaremos primero
18/22


6. dos columnas de altura absoluta




   Una posible solución puede ser estacer una altura absoluta para los
    elementos
   El problema está en que NO podemos saber a priori qué tamaño de letra
    van a contener los elementos ni cuánto texto van a albergar
19/22


7. float




   En caso de que la altura de las columnas sea variable, el posicionado
    absoluto NO nos vale
   Podemos hacer flotar un elemento lo máximo posible a la izquierda o a la
    derecha, y hacer que el texto se “encaje” alrededor de éste.
20/22


8. Dos columnas flotantes




   Si “flotamos” una columna hacia la izquierda, y la otra también a la
    izquierda, se colocará la una a continuación de la otra
21/22


9. columnas flotantes y clear




   Después de elementos flotantes, podemos “limpiar” el float y colocar el
    resto del contenido
22/22


10. Cuidado con IE


   Todo lo visto aquí no se ha adaptado al funcionamiento particular de IE...
   ...de modo que un uso literal de este tutorial podría dar problemas en ese
    navegador

Más contenido relacionado

PPTX
Practica 16...
PPTX
Tutorial de como hacer operaciones fáciles en eclipse ( Java)
PDF
Guía de instalación Factura Electrónica en plataforma Linux
PPTX
Practica 5
ODP
taller n 1 de windows 7
PPTX
Practica 16
ODP
Practica 16...
Tutorial de como hacer operaciones fáciles en eclipse ( Java)
Guía de instalación Factura Electrónica en plataforma Linux
Practica 5
taller n 1 de windows 7
Practica 16

La actualidad más candente (8)

PPTX
Tutorial de como hacer operaciones fáciles en eclipse
PDF
Dominio Active Directory
PPTX
Tutorial Como calcular el sueldo
DOCX
Auditoria de redes
PPT
Crossword paso a paso
PPTX
Taller 1 y 2 jenny
PPTX
PPTX
Taller #uno de window 7
Tutorial de como hacer operaciones fáciles en eclipse
Dominio Active Directory
Tutorial Como calcular el sueldo
Auditoria de redes
Crossword paso a paso
Taller 1 y 2 jenny
Taller #uno de window 7
Publicidad

Destacado (20)

PDF
Paralysis Resources Guide from Philadelphia Lawyers at Anapol Schwartz
PDF
Esc 2015
ODP
Redes Sociales Power
PDF
Menu restaurante ramon !! e.e
PPTX
El beta
PDF
Ems cataloges
DOC
Planificación
PDF
2011 school of jewellery short course brochure
DOC
Curso botanica medicinal
DOCX
Que es betwin
PPT
Rayo laser 2.002
PDF
Catalogo de rabourdin
PPTX
Instaweb Company Profile
PDF
VMworld 2013: Organizing for Cloud Operations – Challenges and Lessons Learned
PPT
Mi Comunidad Autónoma:Andalucia
PDF
Coaching: Oportunidade de Carreira para Executivos
PPT
Mobile Newsmaking
PPTX
Movimientos arquitectonicos en europa y norteamerica ivonne puyo
DOCX
Soalan akhir tahun p. seni tahun 2 blog
PDF
Aves magacinedicion2
Paralysis Resources Guide from Philadelphia Lawyers at Anapol Schwartz
Esc 2015
Redes Sociales Power
Menu restaurante ramon !! e.e
El beta
Ems cataloges
Planificación
2011 school of jewellery short course brochure
Curso botanica medicinal
Que es betwin
Rayo laser 2.002
Catalogo de rabourdin
Instaweb Company Profile
VMworld 2013: Organizing for Cloud Operations – Challenges and Lessons Learned
Mi Comunidad Autónoma:Andalucia
Coaching: Oportunidade de Carreira para Executivos
Mobile Newsmaking
Movimientos arquitectonicos en europa y norteamerica ivonne puyo
Soalan akhir tahun p. seni tahun 2 blog
Aves magacinedicion2
Publicidad

Similar a AJAX y JS: Mini chat (fase 1) (20)

PDF
Primeros pasos con Backbone js, por Xavier Aznar
DOCX
Usando Netbeans para desarrollos en PHP
PDF
PROGRAMACIÓN DE CÓDIGOS CON PHP
PDF
Base de datos desde vb 6.0
PPTX
Manual de netbeans_7(2)(2)(2)
PPTX
Chap 15dpin
DOCX
Manual completo del manejador de base de datos Postgre SQL
PDF
Flexbox
PPT
Java Script de canibaless
PPT
Javascript de Canibales
PPT
Todo Javascript para canibales
PDF
INFOSAN Delphi 603-752
DOCX
Layout
DOCX
Layout
PDF
Guia bootstrap
PDF
Creación de VLANs (subredes) desde Cisco Packet Tracer Student
PPTX
Clase 1 java
PDF
Manual_java.pdf
PDF
Tutorial de eclipse
Primeros pasos con Backbone js, por Xavier Aznar
Usando Netbeans para desarrollos en PHP
PROGRAMACIÓN DE CÓDIGOS CON PHP
Base de datos desde vb 6.0
Manual de netbeans_7(2)(2)(2)
Chap 15dpin
Manual completo del manejador de base de datos Postgre SQL
Flexbox
Java Script de canibaless
Javascript de Canibales
Todo Javascript para canibales
INFOSAN Delphi 603-752
Layout
Layout
Guia bootstrap
Creación de VLANs (subredes) desde Cisco Packet Tracer Student
Clase 1 java
Manual_java.pdf
Tutorial de eclipse

Más de Moisés Pérez Delgado (20)

PPT
02 resistencias y condensadores
ODP
02 croquis y canalizacion
PPT
02 carcasa y fuente
PPT
03 circuitos en cc
ODP
Conceptos básicos de electricidad en mi entorno
PPTX
Conceptos básicos de electricidad
PPTX
Conceptos básicos de electricidad: elementos en mi entorno
ODP
Naturales temas 01 al 04
ODP
Tema 02 elementos del medio natural
ODP
Naturales temas 05 al 07
ODP
Matemáticas: Temas 1 a 4
ODP
Tema 1. El planeta Tierra
ODP
Cálculo de circuitos: Thévenin
ODP
Teoría de circuitos: superposición
ODP
Resolución de circuitos con Kirchoff
ODP
Corriente alterna
ODP
Que sabes de electricidad
ODP
Git: control de versiones
PPT
Qué sabes de word?
02 resistencias y condensadores
02 croquis y canalizacion
02 carcasa y fuente
03 circuitos en cc
Conceptos básicos de electricidad en mi entorno
Conceptos básicos de electricidad
Conceptos básicos de electricidad: elementos en mi entorno
Naturales temas 01 al 04
Tema 02 elementos del medio natural
Naturales temas 05 al 07
Matemáticas: Temas 1 a 4
Tema 1. El planeta Tierra
Cálculo de circuitos: Thévenin
Teoría de circuitos: superposición
Resolución de circuitos con Kirchoff
Corriente alterna
Que sabes de electricidad
Git: control de versiones
Qué sabes de word?

Último (20)

PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
DOCX
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
Híper Mega Repaso Histológico Bloque 3.pdf
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
Escuelas Desarmando una mirada subjetiva a la educación
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
DI, TEA, TDAH.pdf guía se secuencias didacticas
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
Fundamentos_Educacion_a_Distancia_ABC.pdf
ciencias-1.pdf libro cuarto basico niños
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
Tomo 1 de biologia gratis ultra plusenmas
V UNIDAD - PRIMER GRADO. del mes de agosto
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Crear o Morir - Andres Oppenheimer Ccesa007.pdf

AJAX y JS: Mini chat (fase 1)

  • 2. 2/22 Visión global  En esta nueva versión de cRono vamos a añadirle un mini-chat  Haremos uso intensivo de Javascript, CSS y AJAX
  • 3. 3/22 Algunos requisitos del mini-chat  Al hacer doble click sobre un jugador conectado se me abre una ventana de mini-chat con ese jugador  NO puedo abrir un mini-chat conmigo mismo  NO puedo abrir un mini-chat con un jugador con el que ya estoy chateando  Solo se permite un máximo de 3 mini-chats simultáneos  El servidor hará de almacén de conversaciones  Comunicaremos los clientes con el servidor vía AJAX  Cada jugador consultará de forma periódica si hay un mensaje para él vía AJAX  Una vez ha descargado un mensaje, se marcará en el servidor como leído, de modo que NO se vuelva a enviar al jugador
  • 4. Fase 1: los 6 pasos
  • 5. 5/22 PASO 1: Devolver lista de jugadores conectados separados por ;  El servidor debe olvidarse de la capa de presentación, así que devolverá simplemente la lista de jugadores como una cadena de texto en la que separamos por ; los login  Modifica los métodos Jugador.toString y JugadoresList.toString  Asegúrate que este paso funciona
  • 6. 6/22 PASO 2 – cliente: panel de conectados, una capa por cada jugador  Desde el cliente, cuando recibes en AJAX la lista de jugadores conectados, vuélcala a un array  Para ello utiliza el método split  Crea una rutina crearUnaCapaPorJugador(vectorJugadores) que cree dinámicamente código HTML en el panel de jugadores conectados  Esta rutina devuelve el código HTML que se inserta en el inner del panel de conectados  Prueba este paso antes de seguir
  • 7. 7/22 PASO 3: Evento doble click sobre jugador  Captura el evento doble click sobre un jugador conectado  Hazlo sobre la capa del jugador  Asegúrate de que este paso funciona simplemente mostrando un alert
  • 8. 8/22 PASO 4: registrar número de chats establecidos  Llegados a este punto nuestro cRono ya reacciona a doble click sobre un jugador conectado  La rutina que maneja el doble click llámala agregarVentanaChat(who)  who representa el alias ó login del jugador contra el que he abierto el mini-chat  Todos el código asociado al mini-chat alójalo en un fichero llamado chat.js  Crea una nueva capa chats que alojará todas las ventanas de mini-chat.  En este paso, esta capa contendrá simplemente el número de chats abiertos  Crea una variable global nchats para llevar esta cuenta  Actualiza esta cuenta en tu función que captura el doble-click sobre un jugador  Muestra el valor de nchats en la capa de chats.
  • 9. 9/22 PASO 5: controla la apertura de chats  Evita que el jugador pueda abrir un mini-chat consigo mismo  Evita que el jugador pueda abrir más de 3 mini-chats  Evita que el jugador pueda abrir un chat con un jugador con el que ya está hablando  Para ello, crea un array chats_with que contenga una entrada con el login (ó alias) del jugador con el que inicia un chat  Antes de abrir un chat, comprueba que ese jugador NO esté ya en la lista de chats_with
  • 10. 10/22 PASO 6: Ventana de chat básica tituloChat <span <span tituloChat...> <DIV tituloChat...> botoneraChat...> conversacionChat ventanaChat chats mensajeChat
  • 12. 12/22 Fuente  Este mini-tutorial es una traducción de BarelyFitz Designs  En esta URL tienes la fuente original: Enlace al original
  • 13. 13/22 1. position: static  Este es el posicionamiento por defecto de cualquier elemento  Indica que NO se le asigna una posición, sino simplemente se ubica “donde le toque”  Normalmente NO se indica explícitamente, salvo para modificar el posicionamiento de un objeto que previamente hemos establecido
  • 14. 14/22 2. position: relative  Nos permite establecer top - bottom y left - right  De esta manera lo desplazamos de la ubicación que le correspondería si no hubiéramos modificado/variado su posición  El div-1 se ha desplazado a la izquierda de donde le tocaba  El siguiente elemento (div-after) se coloca donde le hubiera tocado, de modo que queda detrás de div-1
  • 15. 15/22 3. position: absolute  Cuando establecemos position: absolute, el elemento se elimina del documento y se ubica exactamente donde le indiquemos.  Vamos a mover div-1a al top de la página:  Hemos colocado el div-1a en una posición absoluta de la página  Nos podría interesar en una posición absoluta dentro de otro div, y aquí es donde usaremos la combinación relative-absolute
  • 16. 16/22 4. position:relative + position:absolute  Si establecemos position:relative para div-1, cualquier elemento dentro de él será posicionado de forma relativa a su posición  Ahora, al div-1a, dentro de div-1, le indicamos position:absolute, lo podemos colocar en el top de div-1
  • 17. 17/22 5. dos columnas absolute  Una ventaja del posicionamiento absoluto es que podemos definir los elementos en cualquier orden en la página y se ubicarán en la posición deseada...  ...con independencia de cuál declaremos primero
  • 18. 18/22 6. dos columnas de altura absoluta  Una posible solución puede ser estacer una altura absoluta para los elementos  El problema está en que NO podemos saber a priori qué tamaño de letra van a contener los elementos ni cuánto texto van a albergar
  • 19. 19/22 7. float  En caso de que la altura de las columnas sea variable, el posicionado absoluto NO nos vale  Podemos hacer flotar un elemento lo máximo posible a la izquierda o a la derecha, y hacer que el texto se “encaje” alrededor de éste.
  • 20. 20/22 8. Dos columnas flotantes  Si “flotamos” una columna hacia la izquierda, y la otra también a la izquierda, se colocará la una a continuación de la otra
  • 21. 21/22 9. columnas flotantes y clear  Después de elementos flotantes, podemos “limpiar” el float y colocar el resto del contenido
  • 22. 22/22 10. Cuidado con IE  Todo lo visto aquí no se ha adaptado al funcionamiento particular de IE...  ...de modo que un uso literal de este tutorial podría dar problemas en ese navegador