Team Foundation Task Board: Auto Refresh

 

[Update: Version 0.3 has been released]

In a previous post I talked how you could enhance TFS task board by adding the work item ids to the cards using a bookmarklet and also mentioned several things that people usually want added to their task board (like card coloring).

In that post I didn’t mentioned a common request (was saving it for this post Smile) is the ability for the task board to be automatically refreshed.

While a automatically refresh, isn’t very interesting when used by a person, it is kind of of mandatory if you wish to have a wallboard displayed in a screen visible to the entire team.

Since this functionality isn’t available out of the box, I’ve written a Web Access Extension to add this capability to the task board.

While extensions are supported (for now only on premises version, this feature is not enabled on Team Foundation Service) they are still a black art. Writing an extension is not an easy task, since there is no public documentation yet. To be able to do it, you have to either reverse engineering or know the right people who can give an hand at this.

Extensions are executed exclusively on the client side and are written in Javascript, since 2012 Web Access supports a client side object model, so you can call practically every API that Team Foundation Server has.

There are several types of extensions but I’m not exact sure if they are formalized. with extensions you can do a lot of things (list not extensive  Smile). I’m still scratching the surface of all of this…

  • Work Item Custom Controls – You can extend work item forms with your own controls. Creating such an extension has been documented in the ALM rangers guidance – Team Foundation Server Process Template Customization Guide
  • Custom Build sections – adding custom build sections like in Team Explorer
  • Change the look & feel of pages – like using custom colors, formatting based on conditions, change CSS styles
  • Add/remove behavior from pages – like adding missing functionality or adding support for gestures for example
  • hook up custom event handlers  – like the save event for having customized validations
  • Extend of replace existing UI Controls- For example to use a different rich editor

So in order to enable auto refresh on your task board you will have to install the provided extension (I have named it Task Board Enhancer because I intend (time permitting) to add more functionality to it, the auto refresh is the first feature.

To install it, to go the admin page , by clicking on the cog icon (FIGURE 1)

image

Select the instance by clicking on “control Panel”

image

Then click on the extensions tab

image

Click on the cross to upload the extension zip file.

image

After the upload is done, you will need to enable the extension by clicking on the enable button.

image

To see the result, just go to a task board (you may need to press control F5 to force a full refresh of the javascript for the first time).

auto refresh

A new checkbox will be added (disabled by default), if you enable it will start a countdown (30 seconds for now) and then the value reaches zero, the board will be automatically refreshed.

if you wish to disable the refresh, untick the checkbox.

If you want to enable the refresh without checking the box manually, you can pass the parameter _tspRefresh with the value 1 in the url.

This can come in handy if you wish display the taskboard in a wallboard and don’t want to manually set the refresh.

For example to start Internet Explorer in kiosk mode you could do (other browsers also support similar features)

iexplore -k http://tfs.mycompany.com:8080/tfs/myTeamProject/myTeam/_board?_tspRefresh=1

(don’t form replace the text in bold with the name of your server, team project and team name (which can be omitted for the default team)

Download the extension
Leave a comment ?

23 Comments.

  1. Do you have the unminified source available?

  2. Good post. And I am looking for some ways to add a new page to TFS 2012 Web Access like Time Sheet for in-progress work items. Can you help me in this regards? I Appreciate any help.

    Thanks
    Pradeep

    • There is currently no documented way to add pages to Web Access.

      You will have to wait for a documented way, or to figure this on your own…

      There was no documentation for doing this in 2010 and people did it anyways. :-)

  3. Hi Tiago

    This is exactly what I was looking for, thanks.

    One issue I have – I am using your auto refresh on the “Team members” view for the current iteration KanBan. However the default on that page is the “stories” view meaning on each refresh it reverts to that view. Any way to change that behaviour so it refreshes on the same view – i.e. remains on the “Team members” view?

  4. Sina Jazayeri

    Hi and thanks for creating your very useful Task Board Extender. One of the great features I find is the “Closed Stories” filter; I would really like to see a similar filter that allows only the Active Stories to be included in the Task Board – why? because then you could get interoperability between the KANBAN and Task Board to help enforce your WIP limits. So the Team would first move the right number of Stories to Active state from the KANBAN board and then refer to Task Board to work on the related Tasks. The Team would switch back and forth between the Two boards to manage daily work.

    • Tiago Pascoal

      Not sure exactly how to fit that into the UI.

      But let’s Forget that for a moment.

      Your workflow seems valid, but how do you deal with the fact that the taskboard only works with iterations?

      I’m assuming you don’t use iterations. Or i’ve missed something?

      • Sina Jazayeri

        We do use Iterations; we are currently moving away from standard SCRUM to KANBAN; what we are planning to do is to flow work toward delivery of each Feature – the length of each Feature will determine the length of the Iteration – that is we are expecting to have variable length Iterations.

        • I’m obviously missing something. :-)

          If you use iterations, when don’t you just move to the iteration the stories you are going to activate?

          If i understand correctly, you have features with (1,n) stories. And your iteration contains one and only one feature.

          So at a given iteration, you have only one feature (and all related stories).

          Or due to the WIP you can have M stories, but only N (whereas N < M) are active at a given point, thus the need to “shadow” inactive stories that don’t fit on your WIP.

          Is this it?

          I’m must be missing something, because this means the flow is in bursts.

      • Sina Jazayeri

        In terms of fitting it in to the UI, you could add a new filter “Inactive Stories” with values (Show, Hide, Collapse).

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>