Skip to main content

Notifications

Community site session details

Community site session details

Session Id :

Business Central Kanban Boards

JAngle Profile Picture JAngle 95

A kanban board is a visual way to manage tasks, often used in agile development, where tasks are represented as cards that are moved through different stages on a board. For some data in BC this could be an interesting way for a user to interact. As standard BC doesn’t have this type of feature, but with a little effort I can see two possible options. My initial idea came from the fact BC users can now view data in the “Analyze” mode:

I’ve gone for 1 which is designed in AL and therefore has some caveats/restrictions. My second, and favored, option is using PowerApps – with a PCF. More on that later. Let’s review each.

The first experience can be seen here:

UI restrictions apply because this has been written in AL. A card or lane for each of the “Status” values available for Job records. In absence of a drag and drop type feature, page actions are available to a user for moving single records or many from one lane to another. Logic is available to stop a user from moving a “Completed” job up a status level – because that is not possible.

Code for this is available on github if you want to try it out with some other data. https://github.com/JAng13sea/Blogs/tree/master/Kanban

What about the PowerApps option? This one is much more inline with other types of Kanban board user experiences. Check it out:

True drag and drop available and a further option to have mass movements made with some extra buttons. The PowerApps option gives you much more flexibility over the styling, granted I have left mine very plain. The drag and drop capability is possible due to a PCF which can be downloaded from here: https://github.com/scottdurow/power-drag-drop the link has full instructions too. My main piece of advice with the PowerApps method is avoid using ForAll when patching the data back into BC. The “Save Data” button I have shown in the .gif uses the below code:
ForAll(Filter(dd_open.CurrentItems,HasMovedZone=true) As BoardRecs,Patch(colJobs,LookUp(colJobs,Text(systemId)=BoardRecs.ItemId),{status:BoardRecs.DropZoneId,Edited:true}));
Patch('jobs (JAngle/jagrp/v2.0)',ShowColumns(colJobs,"systemId","status"))

As you can tell from the “source” the Patch uses, it has been necessary to create a custom API page to interact with the fields I wanted. What do you think? Which is your favourite option? Will you try one of these with your BC data?


This was originally posted here.

Comments

*This post is locked for comments