SpringBoot 2. Kanban-Board

Kanban

En el link http://bootsnipp.com/snippets/0yDZy podemos ver el proyecto kanban-Board creada por bbilginn.

Esta desarrollado con html, css, jquery y booststrap. Vamos a tomar su código y modificarlo para hacerlo mas dinámico. Inicialmente crearemos las columnas y artículos (como los llama el autor) con Json. Json es creado con arreglos de javascript.

Identificar código HTML que se generara por javascript

Revisando el código HTML del proyecto podemos identificar que utiliza 2 objetos; columnas y artículos.

Y podemos construir estos objetos pasándole los siguientes datos.

Para Columna:

  1. Titulo
  2. id
  3. Artículos que contiene

Para Articulo:

  1. Nombre
  2. Titulo
  3. Descripción

Construir columnas y artículos con JavaScript

Podemos generar cada objeto con los siguientes códigos:

Para Columna:

var varColumna="";
varColumna ="<div class=\"panel panel-primary kanban-col\">";
varColumna+="	<div class=\"panel-heading\">"+titulo+" <i class=\"fa fa-2x fa-plus-circle pull-right\"></i></div>";
varColumna+="   <div class=\"panel-body\">";
varColumna+="   	<div id=\""+titulo+"\" class=\"kanban-centered\">";
varColumna+="		</div>";
varColumna+="   </div>";
varColumna+="   <div class=\"panel-footer\">";
varColumna+="   	<a href=\"#\">Add a card...</a>";
varColumna+="   </div>";
varColumna+="</div>";

Donde,

  • titulo = Nombre del titulo de la columna. Este mismo valor se puede usar como id ya que cada columna debe ser única.

Para Articulo:

varArticle = "";
varArticle	=  "<article class=\"kanban-entry grab\" id=\"+id+"\" draggable=\"true\">";
varArticle	+=  "  <div class=\"kanban-entry-inner\">";
varArticle	+=  "      <div class=\"kanban-label\">";
varArticle	+=  "          <h2><a href=\"#\">"+nombre+"</a> <span>"+titulo+"</span></h2>";
varArticle	+=  "          <p>"+descripcion+"</p>";
varArticle	+=  "      </div>";
varArticle	+=  "</div>";
varArticle	+=  "</article>";

Donde,

  • id = id del articulo
  • nombre =  Nombre del articulo
  •  titulo = Titulo del articulo
  • descripcion = Descripción del articulo

Puede haber muchas columnas y cada columna puede tener muchos artículos, por tanto, debemos almacenar los datos en arreglos y recorrerlos uno a uno para asignarlo a un div principal si es columna o a una columna si es articulo. Un arreglo de arreglos equivaldría a almacenar los datos en Json.

El código completo para construir columnas y artículos es:

var varColumna = null;
var varArticle = null;
for(var i=0;i<columns.length;i++){
	varColumna ="<div class=\"panel panel-primary kanban-col\">";
        varColumna+="	<div class=\"panel-heading\">"+columns[i].titulo+" <i class=\"fa fa-2x fa-plus-circle pull-right\"></i></div>";
        varColumna+="   <div class=\"panel-body\">";
        varColumna+="   	<div id=\""+columns[i].titulo+"\" class=\"kanban-centered\">";
        varColumna+="		</div>";
        varColumna+="   </div>";
        varColumna+="   <div class=\"panel-footer\">";
        varColumna+="   	<a href=\"#\">Add a card...</a>";
        varColumna+="   </div>";
        varColumna+="</div>";
	$("#sortableKanbanBoards").append(varColumna);
		
	varArticle	= "";
	for(var j=0;j<columns[i].article.length;j++){					
		varArticle	+=  "<article class=\"kanban-entry grab\" id=\"item"+String(i)+String(j)+"\" draggable=\"true\">";
		varArticle	+=  "  <div class=\"kanban-entry-inner\">";
		varArticle	+=  "      <div class=\"kanban-label\">";
		varArticle	+=  "          <h2><a href=\"#\">"+columns[i].article[j].nombre+"</a> <span>"+columns[i].article[j].titulo+"</span></h2>";
		varArticle	+=  "          <p>"+columns[i].article[j].descripcion+"</p>";
		varArticle	+=  "      </div>";
		varArticle	+=  "</div>";
		varArticle	+=  "</article>";
	}
	$("#"+columns[i].titulo).append(varArticle);
}

Notas,

  • sortableKanbanBoards es el id del div principal
  • Cada articulo se puede asignar a su respectiva columna porque la columna ya fue creada.

Crear Json con arreglos de JavaScript

Inicialmente creamos las funciones que generan Column y Article

function Column(titulo,article) {
	this.titulo	= titulo;
	this.article= article;
}
	
function Article(nombre,titulo,descripcion) {
	this.nombre		=nombre;
	this.titulo		=titulo;
	this.descripcion=descripcion;
}

Creamos objetos Article y los asignamos a un arreglo

var articleBacklog=[];
var article1 = new Article("Nombre","Titulo","Descripcion");
var article2 = new Article("Sistema Kanban","FrontEnd","Construir un sistema Kanbad de forma dinamica con json, javascript y jquery ");
articleBacklog.push(article1,article2);

Creamos los objetos column con el arreglo de articulos. El objeto column se asigna a un arreglo de columnas.

var columns=[];
var column1= new Column("Backlog",articleBacklog);
var column2= new Column("Proceso",[]);
var column3= new Column("Terminado",[]);
columns.push(column1,column2,column3);

Así obtenemos columns que es un arreglo de columnas y cada columna contiene sus articulos.

El equivalente el Json es:

{
	"columns": [{
		"column1": {
			"titulo": "Backlog",
			"Article": [{
				"nombre": "Nombre",
				"titulo": "Titulo",
				"descripcion": "Descripcion"
			}, {
				"nombre": "Sistema Kanban",
				"titulo": "FrontEnd",
				"descripcion": "Construir un sistema Kanbad de forma dinamica con json, javascript y jquery"
			}]
		}
	}, {
		"column2": [{
			"titulo": "Proceso",
			"Article": []
		}]
	}, {
		"column3": [{
			"titulo": "Terminado",
			"Article": []
		} ]
	}]
}

Cambios al proyecto original

HTML

  • Borrar todos las columna y articulos, sólo dejar el div sortableKanbanBoards.
  • Dejar el div processing-modal ya que se usa cuando se arrastra los articulos de una columna a otra.

JS

  • Cambiar $(function () { por $(document).ready(function() { para asegurarnos que se ejecute hasta que la pagina este completamente cargada.
  • Poner funciones que generan Column y Article
  • Crear objetos Column y Article
  • Código completo para construir columnas y artículos

Se puede descargar el proyecto completo de https://github.com/arielolivagh/kanbanDinamico

En la entrada siguiente mostraremos el proceso para clonar un proyecto de GitHub en Eclipse.

 

SpringBoot 1. Crear ambiente

Antecedentes

Vamos a desarrollar un proyecto completo en framework Spring Boot https://projects.spring.io/spring-boot/. Las tecnologías que vamos a utilizar son:

  1. JEE
  2. Maven
  3. JPA
  4. MySQL
  5. Jquery
  6. Json
  7. Ajax
  8. Bootstrap
  9. GitHub

Generar ambiente

Se puede trabajar sobre Linux, Windows o Mac, en lo personal me gusta mas Linux (Ubuntu), pero hay que considerar las versiones de las herramientas, así como los detalles específicos; manejo de rutas, tipos de ejecutables  .sh para Linux, .exe para Windows, etc.

Para generar el ambiente de trabajo requerimos lo siguiente.

Estructura de carpetas

Lo más conveniente es generar una estructura de trabajo como la siguiente:

Nivel 1 Nivel 2 Nivel 3 Descripción
developer Carpeta raíz
db Base de Datos y los drivers de conexión.
git Repositorio para GitHub
ide
eclipse Instalación de Eclipse
workspace Espacio de trabajo de Eclipse
seguridad Certificados para conectarse a GitHub

Por ejemplo:

Esta nos permite tener completamente organizado todo el ambiente de trabajo y ubicar perfectamente donde esta cada componente. Por ejemplo si quisiéramos pasarlo a otra maquina bastaría con copiar toda la estructura de carpetas.

Descargar las siguientes herramientas

  1. Eclipse.
  2. JDK 8 de Java.
  3. MySQL Community Server.
    • Link. http://dev.mysql.com/downloads/mysql/
    • Versión. Dependiendo de su Sistema Operativo.
    • Instalación. Descargar el archivo y ejecutarlo. Solo solicita la contraseña del usuario root.
  4. MySQL Workbench.
  5. Driver MySQL

Crear las siguientes cuentas

  1. GitHub.
    • Link. https://github.com/
    • Observaciones. Crear una cuenta. Para proyectos públicos es gratis.