Archive for the 'Javascript' Category

Jquery UI: usando draggables y droppables

Tuesday, November 27th, 2007

En algún momento te haz preguntado; ¿Como obtengo el objeto, que estoy arrastrando con el ratón usando jquery.ui?; la pregunta es facil de responder y trataremos de explicar algunas cosas sobre draggables y dropables para entender mejor.

El concepto para comenzar a utilizar ui.draggables y ui.droppables es sencillo; simplemente creen un par de DIV (de ejemplo); cada uno con un nombre distinto (pueden, opcionalmente, agregarle el classname “draggable” o “droppable” para llegarle por selectores CSS como siempre se puede en jquery) y posicionenlos en cualquier area separada de pantalla (sea usando position: absolute o porque los han colocado dentro de tablas o celdas separadas).

Ahora viene la magia! detrás de jquery: para arrastrar simplemente declaren al DIV1 draggable:

$(”#dragged”).draggable();

Opcionalmente, pueden decirle al objeto draggable que genere un “clon”; esto es, que cuando se inicia el arrastre del objeto; no se arrastra al DIV1, sino a un “clon” del DIV1.

$(”#dragged”).draggable({
helper: ‘clone’
});

Posteriormente viene la declaración del DIV2, en este caso un contenedor de objetos “arrastrados” (droppable); igual que el anterior, podemos indicar que es droppable:

$(”#dropped”).droppable();

Claro, en este caso podemos contar con ciertas opciones para restringir o personalizar nuestro “droppable”:

accept: “.draggable”, : nos permite indicar que tipo de objeto (referencia a un id o selector) aceptará este droppable

activeClass: ‘droppable-active’, :cuando el droppable tenga dentro de si un “draggable”, cambiará su CSS a este estilo

hoverClass: ‘droppable-hover’, : cuando pasamos por encima (mouseover) el objeto draggable, esta será el estilo CSS aplicado

tolerance: ‘fit’ :tipo de tolerancia con los draggables, puede ser “fit”, si caen completo dentro del droppable, “intersect”, si los bordes del droppable y el draggable se intersectan.

Además, droppable posee una serie de “eventos” que pueden ser funciones callback que ocurren cuando un draggable los libera.

ejemplos:

drop: function(ev, ui) { //ocurre cuando el draggable cae dentro del droppable
},

activate: function(ev, ui) { //ocurre cuando el draggable se activa (comienza a ser arrastrado)
},

deactivate: function(ev, ui) { //ocurre cuando el draggable deja de ser arrastrado
},

como todo evento de droppable, posee 1 referencia implicita y dos parámetros; la referencia implicita es al objeto “this”; que se refiere al objeto droppable;

$(this).append(”");

o sin necesidad de jquery: var iddrop = this.id;

y ev, que se refiere al gestor de eventos (al DOM Event de la página actual).

con EV podemos obtener ejemplo, las coordenadas de donde ha estado el draggable:

ev.ClientX / evClientY

ahora, quien es ui?, con ese nombre tan críptico, uno no sabe lo que es.

Pues bueno, siguiendo la regla de John Resig (primeras opciones, parámetros, segundas, propiedades, ultimas, callbacks); ese ui debe ser un objeto o una propiedad de droppable; en este caso, UI retorna una referencia al objeto arrastrado (es decir al draggable).

ej.

var id = ui.draggable.element.id;

o

$(ui.draggable.element).

Con lo cual podemos extraer toda la información que necesitemos del elemento que fue arrastrado.

El bloque de código que usé para pruebas fue el siguiente:


$(document).ready(function(){
$(”#dragged”).draggable({
helper: ‘clone’
});
$(”#dropped”).droppable({
accept: “.draggable”,
activeClass: ‘droppable-active’,
hoverClass: ‘droppable-hover’,
drop: function(ev, ui) {
//alert(ev.clientX);
$(this).append(”<br>Dropped!”);
},
deactivate: function(ev, ui) {
alert(ui.draggable.element.id);
$(this).append($(document.createElement(’div’)).text(’deactivate’));
},
tolerance: ‘fit’
});
});

Un embuste 2.0

Thursday, May 10th, 2007

Tal vez algunos de ustedes recibieron un correo que decia algo como:

Tienes que echarle un ojo a mi nuevo vicio.
Estoy tan seguro de que te va a gustar que te he registrado…sólo falta tu confirmación!

http://us1.badoo.com/phenobarbital/in/104063

Ya me cuentas! ;)

Jesus Lara

Esta invitación ha sido enviada con fecha 7/05/07 21:57 a Perico de los palotes <pericopalotes@gmail.com > a petición de Jesus Lara <jesuslarag@gmail.com>.
Si no deseas recibir más mails nuestros, haz clic aquí.

Apenado, les explicaré la situación:

Una "amiga" me comentó de una interesante aplicación web 2.0 para redes sociales que apuntala mucha de su interfaz gráfica a AJAX, de manera interesante y por gran curiosidad decido inscribirme y probar su aplicación; se llama "badoo.com" y es supuestamente una comunidad virtual de perfiles de usuario para que cada quien se describa y diga como es …

Aqui viene lo interesante, la aplicación (como muchas otras, hi5, etc) solicita un mail para que "invites" a tus "amigos" a la nueva comunidad, a diferencia de otros scripts de este tipo donde te presentan la lista de direcciones y tu decides a quien invitar; los seres inventores de esta aplicación se les ocurrió hacerlo de manera automática!, es decir, tomar tooodas mis 500 direcciones y como buen spam, hacerselas llegar a mis jefes, colegas, mi madre, mi hermano en europa, a la infanta helena y como no, a perico de los palotes.

Sin permiso de mi parte (no hay licencia legal que lo permita) convierten mi dirección en un fuerte emisor de spam publicitario de su comunidad y para colmo, al parecer lo venden a otras listas!, porque mi spam se ha mulplicado por 10 desde que estoy suscrito a ellos.

Para colmo de males, estética y de interface estan gachos, interfaces poco intuitivas y javascripts de gran peso hacen dificil la aplicación incluso en un core duo (el exceso de ajax es malo, siempre); no hay muchos botones y a veces no hay forma de conseguir como hacer las cosas.

Para peor colmo, al igual que match y otras comunidades deshonestas, el 70% de los lindos y hermosos cuerpos que se ven en los perfiles son falsos; en una revisión rápida me encontré con cientos de perfiles donde los datos eran falsos (extraidos de gmail o de algunas comunidades vecinas como hi5) y las fotos eran afamadas actrices porno.

O sea, gracias a Dios y estoy en Linux, porque si hubiera estado en winDOS, capaz y hasta me instalan un troyano …

Todo sea por tener 6 millones de usuarios, asi sean falsos … xD

Hijas del mismo padre? (o una crítica a las páginas del gobierno)

Tuesday, January 30th, 2007

Alguien conoce algún bug de ASP que cause que la fecha se vea asi -> 30 de Enero de 107
Pensé que el caso del SENIAT era algo aislado, pero una gran cantidad de páginas web del estado poseen ese mismo "característico" error; o es un fallo común en ASP (que yo programando en ASP nunca lo tuve) o todas han sido creadas con el mismo CMS? …
Ya he visto varias (INE, vicepresidencia, minCI, etc) …

Todavia sigo intrigado como en algunos organismos (como PDVSA), te exigen trabajar con SL puro y plano (incluso como comenté a walter, no podemos usar postfix porque no es completamente GPL), pero la gran mayoria de los organismos públicos aun siguen en tecnologías propietarias como ASP, cuando de plano es el ejecutivo y no PDVSA, el que deberia velar más por el cumplimiento del decreto 3390…

Otra pregunta, por que sigue la página de nuestro presidente caida? … diganle si alguien lo conoce, que si quiere se la hago, sin costo, a mi, particularmente, me da una profunda PENA!, que el presidente que decretó el 3390, no solo no tenga una página digna, sino que NO TIENE PAGINA! …
http://www.venezuela.gob.ve/

Bueno, al menos gobiernoenlinea está en linux … pero y que hay de la vicepresidencia?
toolbar.netcraft.com/site_report
y el Ministerio de comunicación e Información?, alguien me puede explicar esto?:

CANTV Servicios, Venezuela Caracas 200.109.242.154 Linux Microsoft-IIS/6.0 29-Sep-2006

Como se puede correr linux con IIS 6.0? y además tener contenido con ASP? … que? … usando mod_asp acaso?

Tambien hay páginas como las del FONACIT, hecha en ASP con frontpage 3; DIOS!, quiero estrecharle la mano al valiente que hizo eso! …

En fin, yo de que me preocupo?, si hasta la pagina de la ley resorte y la de conatel están en ASP?, parece que en vez de disminuir, aumentan la cantidad de organismos que apuestan por el software propietario antes de aceptar el 3390.

Por cierto, me acuerdo cuando la página del despacho de la presidencia de la república tenia ciertas caracteristicas ajax (no refrescamiento); pero extrañamente sin usar el objeto xmlhttprequest … intrigado me dispuse a revisar … y pam …
codigo VB del lado del cliente para conectarse a la DB de la presidencia! … DIOS!, que genios!
algo del codigo:

	   set rsFilter = createobject("adodb.recordset")

	   rsFilter.Fields.Append "record_key",adInteger,4,adFldIsNullable	   rsFilter.Fields.Append "id_noticia_web",adInteger,4,adFldIsNullable	     	   rsFilter.Fields.Append "id_foto_det_web",adInteger,4,adFldIsNullable	   rsFilter.Fields.Append "titulo_noticia",advarchar,500, adFldIsNullable	   rsFilter.Fields.Append "resumen_noticia",advarchar,5000, adFldIsNullable	   rsFilter.Fields.Append "desc_noticia",advarchar,8000, adFldIsNullable	   rsFilter.Fields.Append "fec_noticia",advarchar,15, adFldIsNullable

	   rsFilter.Open	   rsFilter.AddNew

	   rsFilter.Update

Es completamente EVIDENTE!, la página del presidente no está caida, simplemente que esta página solo corre en Internet Explorer …

Uff, que contento debe estar Bill Gates con este schema DTD en la parte superior de la pagina de la armada venezolana:
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns="http://www.w3.org/TR/REC-html40">

JaJaJa … las comunidades Linux, que vamos a hacer al respecto?? …

Por cierto, alguien sabe que le paso a la página de los circulos bolivarianos?, eso es innavegable en cualquier navegador, da error de encoding en casi todos los navegadores, los menus no sirven en firefox ni en opera y en ie es bastante buggy …