NEW VERSION RELEASED! Webix 11 Read More Core Updates, Extended Functionalities in SpreadSheet and File Manager and more

Kanban DND Events, JavaScript Programming Example of Kanban DND Events

JavaScript Programming Example of Kanban DND Events

In Webix Kanban, you can drag-n-drop items with tasks from one column to another. It's also possible to forbid all DND operations. Check out a free coding sample of Kanban DND Events below. Feel free to take advantage of it for your project.

JS Code

function onBeforeDrag(dragContext){
  webix.message("Drag has been started");
  return true
};

function onBeforeDragIn(dragContext,e,list){
  // item id
  var item = this.getItem(dragContext.start);

  // if we move an item from one list to another
  if(dragContext.from != dragContext.to){
    var statusFrom = dragContext.from.config.status;
    var statusTo = dragContext.to.config.status;
    var statusIndex = {"new":0,"work":1, "test": 2, "done":3};
    var diff = Math.abs(statusIndex[statusFrom] - statusIndex[statusTo]);
    if(diff>1){
      return false;
    }
  }
  return true;
};

function onAfterDrop(dragContext,e,list){
  // item id
  var item =this.getItem(dragContext.start);

  // if we move an item from one list to another
  if(dragContext.from != dragContext.to){
    var status = dragContext.to.config.status;
    // show a message with new status and order
    webix.message("Item '"+item.text+"' was moved into '"+status+"' column to the "+item.$index +" position");
  }
  else
    webix.message("Item '"+item.text+"' was moved to the "+item.$index +" position");
};

webix.ready(function(){
    webix.CustomScroll.init();

  webix.ui({
    type:"space",
    rows:[
      {  view:"label", label:"You can move tasks only between neighbouring columns"},
      {
        view:"kanban",
        id:"myBoard",
        type:"wide",
        on:{
          onListBeforeDrag: onBeforeDrag,
          onListBeforeDragIn: onBeforeDragIn,
          onListAfterDrop: onAfterDrop
        },
        cols:[
          { header:"Backlog",
           body:{ view:"kanbanlist", status:"new"}
          },
          { header:"In Progress",
           body:{ view:"kanbanlist", status:"work"}
          },
          { header:"Testing",
           body:{ view:"kanbanlist", status:"test"}
          },
          { header:"Done",
           body:{ view:"kanbanlist", status:"done"}
          }
        ],
        tags:tags_set,
        users:users_set,
        data:full_task_set
      }
    ]
  });
});

HTML Code

<link rel="stylesheet" type="text/css" href="https://docs.webix.com/samples/63_kanban/common/style.css">

<script>
 var path =  "https://docs.webix.com/samples/63_kanban/";
 var users_set = [
	{id:1, value:"Rick Lopes", image:path+"common/imgs/1.jpg"},
	{id:2, value:"Martin Farrell", image:path+"common/imgs/2.jpg"},
	{id:3, value:"Douglass Moore", image:path+"common/imgs/3.jpg"},
	{id:4, value:"Eric Doe", image:path+"common/imgs/4.jpg"},
	{id:5, value:"Sophi Elliman", image:path+"common/imgs/5.jpg"},
	{id:6, value:"Anna O'Neal"},
	{id:7, value:"Marcus Storm", image:path+"common/imgs/7.jpg"},
	{id:8, value:"Nick Branson", image:path+"common/imgs/8.jpg"},
	{id:9, value:"CC", image:path+"common/imgs/9.jpg"}
 ];

 var tags_set = [
	{id:1, value:"webix"},
	{id:2, value:"jet"},
	{id:3, value:"easy"},
	{id:4, value:"hard"},
	{id:5, value:"kanban"},
	{id:6, value:"docs"},
 ];
 var full_task_set = [
	{ id:1, status:"new", text:"Test new authentification service", tags:[1,2,3] },
	{ id:2, status:"work", user_id: 5, text:"Performance tests", tags:[1] },
	{ id:3, status:"work", user_id: 6, text:"Kanban tutorial", tags:[2] },
	{ id:4, status:"work", user_id: 3, text:"SpreadSheet NodeJS", tags:[3] },
	{ id:5, status:"test", user_id: 9, text:"Portlets view", tags:[4,2] },
	{ id:6, status:"new", user_id: 7, text:"Form Builder", tags:[4,6] },
	{ id:7, status:"test", text:"Code Snippet", tags:[1,2,3] },
	{ id:8, status:"work", user_id: 1, text:"Backend integration", tags:[5] },
	{ id:9, status:"work", user_id: 2, text:"Drag-n-drop with shifting cards", tags:[5] },
	{ id:10, status:"work", user_id: 4, text:"Webix Jet 2.0", tags:[4] },
	{ id:11, status:"test", user_id: 9, text:"Chat app interface", tags:[4,2] },
	{ id:12, status:"done", user_id: 8, text:"Material skin", tags:[4,6] }
 ];
</script>