Programatik

August 16, 2007

Objeto Tag en javascript

Filed under: Taxonomía, JavaScript — Rafa @ 4:56 pm

Una de las características que necesitaba para Neurange era la posibilidad de crear una taxonomía con la que disponer de todos los contenidos etiquetados y clasificados.

En este punto se planteaban dos problemas:

  • El sistema de taxonomía en sí
  • La interfaz de usuario para el manejo de dicha taxonomía

El sistema por sí mismo no representaba gran dificultad. Bastaba con mantener una relación de los contenidos con sus etiquetas. Esto se ha escrito en base al modelo relacional de los datos que maneja Neurange.

La interfaz era otro cantar. Al principio escribí varias funciones en javascript que realizaban llamadas vía Ajax para comprobar cómo se estaban escribiendo las etiquetas. Esto era muy ineficiente y costoso de mantener.

Se me ocurrió entonces que podría escribir un objeto javascript que se encargara de ciertas operaciones básicas sobre las etiquetas insertadas en un cuadro de texto. Esas operaciones debían ser las siguientes:

  • obtener una cadena con todas las etiquetas
  • obtener un array de etiquetas
  • contar el total de etiquetas
  • obtener una etiqueta determinada del array de etiquetas

Finalmente conseguí una primera versión que pongo a disposición vuestra con licencia GPL. Una demostración se puede ver aquí.

El código se puede descargar aquí.

El código completo del objeto es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/**
 
 * Tag object
 
 */
 
function Tag() {
 
}
 
/**
 
 * Tag members
 
 *
 
 * tagString is a string with all tags separated by comma.
 
 * tagArray is an array of tags
 
 */
 
Tag.prototype.tagString = "";
 
Tag.prototype.tagArray = new Array();
 
/**
 
 * Converts array of tags in a string of tags separated by comma.
 
 */
 
Tag.prototype.toString = function() {
 
 var str = "";
 
 for (var i = 0; i < this.total(); i++) {
 
 	if (this.tagArray[i] != "") {
 
 		str += this.tagArray[i] + ",";
 
 	}
 
 }
 
 return str;
 
}
 
/**
 
 * Converts a string of tags into an array.
 
 * Assumes comma is tag separator.
 
 */
 
Tag.prototype.toArray = function() {
 
 var a = this.tagString.split(",");
 
 return a;
 
}
 
/**
 
 * gets i-th tag.
 
 */
 
Tag.prototype.getTag = function (i) {
 
 if (i >= 0 && i < = this.tagArray.length) {
 
 	return this.tagArray[i];
 
 }
 
}
 
/**
 
 * Counts and return the number of tags.
 
 */
 
Tag.prototype.total = function() {
 
 return this.tagArray.length;
 
}

Enlaces

  • http://www.neurange.com
  • http://es.wikipedia.org/wiki/Taxonom%C3%ADa
  • http://www.rafachacon.com/lab/Tags/
  • http://www.rafachacon.com/lab/Tags/Tags.zip
  • August 15, 2007

    Inicio de Programatik

    Filed under: General — Rafa @ 4:40 pm

    Hola a todos.

    Hace tiempo que vengo recopilando código, ejemplos y pequeñas soluciones a problemas comunes en diversos cds que suelo nombrar como Programatik, seguido de un número.

    He llegado a tener varios de esos cds y han resultado ser una buena ayuda en muchas ocasiones.

    El paso siguiente era abrir este blog para mostrar no solo esos recortes de código sino también exponer nuevas soluciones a los problemas que suelen surgir en el trabajo diario del desarrollo de software.

    Mi área de trabajo es la realización de sistemas de comercio electrónico y gestión documental. En concreto, hace bastante tiempo que vengo desarrollando el sistema Neurange, con el que he puesto en práctica mi forma de entender una arquitectura sencilla para la gestión de contenidos.

    Espero que con un poco de tiempo este blog contenga información de interés para todos los que os dedicáis al desarrollo de software.

    Todos los comentarios son bien recibidos (las salidas de tono irán derechitas a /dev/null), así que no os cortéis.

    Enlaces

  • http://ww.neurange.com
  • « Previous Page

    Powered by WordPress