jkanban icon indicating copy to clipboard operation
jkanban copied to clipboard

Is there a method to refresh/reload the kanban items?

Open eazuka opened this issue 2 years ago • 4 comments

When a new content that should display on the kanban is saved to db or a content on the kanban is updated, I wand to be able to trigger a function to reload the kanban items so that updated data is displayed.

Is there an available method for this or a know method to get this done?

eazuka avatar Jul 23 '22 15:07 eazuka

Currently the only way to update items is through DOM. You have to get your item and update the "title" with the new DOM. You can also use a reactive framework like React or Vue and update it dinamically.

marcosrocha85 avatar Jul 25 '22 14:07 marcosrocha85

I have the same issue when editing items, but for now i solved it with location.reload() function after editing. It is not the most elegant way but it works. Maybe there is a better idea without the location.reload(). Something with reloading the container only instead of reloading the whole page?

Brecht272727 avatar Sep 03 '22 19:09 Brecht272727

It's not the best approach, but I hope it helps


var kanban = new jKanban({
    element: '#kanban_div_id',
    gutter: '0'
});

var url="tu_url.php"; // CAMBIAR AQUÍ!!!!!!!!
var boards;
var elementos;

var kanban = new jKanban({
    element: '#id_kanban_div',
    gutter: '0'
});

function agregarBoards() {
  console.log("Obteniendo Boards dinámicamente"); // <<<<<<<-------

  var xhr = new XMLHttpRequest();
  xhr.open("POST", url, true);
  xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhr.onreadystatechange = function() {
    if (xhr.readyState === XMLHttpRequest.DONE) {
      if (xhr.status === 200) {
        console.log("Respuesta recibida"); // <<<<<<<-------
        // Obtener los boards transmitidos como un arreglo JSON desde la respuesta
        try {
            boards = JSON.parse(xhr.responseText);
            console.log("JSON válido"); // <<<<<<<-------
            
              // Agregar los boards a jKanban y resolver la promesa
              console.log("Agregamos Tableros"); // <<<<<<<-------
              kanban.addBoards(boards);
              console.log("Llamamos AgregarElementos"); // <<<<<<<-------
              agregarElementos();
            
            // Esperar a que se complete la adición de tableros antes de llamar a agregarElementos()
            
          } catch (error) {
            console.log("JSON no válido"); // <<<<<<<-------
            console.log(error); // <<<<<<<-------
            console.error(error); // <<<<<<<-------
          }
      }
    }
  };
  // Agregar la variable cargarBoards=1 a la petición POST (mi activador, cámbialo a lo que necesites)
  xhr.send("cargarBoards=1");
}
console.log("Llamamos agregar boards"); // <<<<<<<-------
agregarBoards();

function agregarElemento(boardID, id, title) {
  // Crear el objeto element con el id y título proporcionados
  var element = {
    id: id,
    title: title
  };
  console.log(element.id+"|"+element.title); // <<<<<<<-------
  // Agregar el elemento al board correspondiente
  console.log("Agregar elemento: "+boardID+"|"+element); // <<<<<<<-------
  kanban.addElement(boardID, element);
  console.log("Se agregó el elemento"); // <<<<<<<-------
}


function agregarElementos() {
// Realizar la petición POST a maq.php
  console.log("Obteniendo elementos dinámicamente"); // <<<<<<<-------
  var xhr = new XMLHttpRequest();
  xhr.open("POST", url, true);
  xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhr.onreadystatechange = function() {
    if (xhr.readyState === XMLHttpRequest.DONE) {
      if (xhr.status === 200) {
        console.log("Respuesta recibida"); // <<<<<<<-------
        // Obtener los boards transmitidos como un arreglo JSON desde la respuesta
        
        
        try {
          elementos = JSON.parse(xhr.responseText);
          console.log("JSON válido"); // <<<<<<<-------
        } catch (error) {
          console.log("JSON no válido"); // <<<<<<<-------
        }
        
        // Iterar sobre los elementos y agregarlos al board correspondiente
        console.log("Iniciamos Carga de "+elementos.length+" elementos"); // <<<<<<<-------
        for (var i = 0; i < elementos.length; i++) {
          console.log("elemento:"+elementos[i]); // <<<<<<<-------
          var elemento = elementos[i];
          agregarElemento(elemento.boardID, elemento.id, elemento.title);
        }

      }
    }
  };
  // Agregar las variables cargarElementos=1  a la petición POST
  console.log("Enviar Petición cargarElementos"); // <<<<<<<-------
  xhr.send("cargarElementos=1");
}


function eliminarBoards() {
  console.log("Eliminar boards"); // <<<<<<<-------
  boards.forEach(function(board) {
    console.log("Eliminamos board "+board.id); // <<<<<<<-------
    kanban.removeBoard(board.id);
  });
}


function recargarKanban() {
  console.log("Recargamos Kanban"); // <<<<<<<-------
 
  eliminarBoards();
  agregarBoards();

}

luxiusmx avatar Apr 26 '23 08:04 luxiusmx

i do it by simply removing and rebuilding the entire board:

<script>
        kanban(@json($boards));

        function kanban(boards) {
           //remove and re-append board
            $('.kanban-board').remove();
            $('#kanban').append('<div class="kanban-board"></div>');

            new jKanban({
                element: '.kanban-board',       
                gutter: '10px',                
                widthBoard: '250px',         
                responsivePercentage: false,
                dragItems: true,            
                boards: boards,
                
                //..rest of kanban options

VincentVanWijk avatar Feb 19 '24 10:02 VincentVanWijk