7/22/2013

Render View Column Color in a XPage

In Notes you can easily change the color of columns (background and text) with a list of integers in a hidden column. In Xpages it is not as easy, you need to either translate the colors to hex, oder into style classed that do the work for you. I found an interesting article on how to transform the information into styles, you can find it here, but i wanted to have the flexibility to change the notes view and have the xpage change automatically according to it, too.



So i came up with this little function that can be used in a computed style for a row, or a single cell. Make sure to use the advanced properties of the view to make the column entry accessible, in this example i chose "rowData" as the name for the variable, then just use the function like this

getColumnColorStyle(rowData, 3, "width: 15px;");

Its as easy as that, and if you put the function into a script library, you can make it accessible to all of your pages easyily (i chose to use a new namespace for all of the tool functions i use, but here you have got the plain function).

function  getColumnColorStyle(rowData, column, baseStyle){
   var styleString = baseStyle?baseStyle:"" ;
   var arr=rowData.getColumnValues().get(column);
   if(arr){
      var f = function twoDigitHex(anInteger){
         return ("00"+parseInt(anInteger).toString(16)).right(2);
      };
      var hexcolor = "#"+f(arr[0])+f(arr[1])+f(arr[2]);
      if(hexcolor!="#000000" )
         styleString+= "background-color: "+hexcolor+";";
      if(arr.length > 5){
        hexcolor = "#"+f(arr[3])+f(arr[4])+f(arr[5]);
        if(hexcolor!="#000000" )
           styleString+= "color: "+hexcolor+";" ;
      }
   }
   return styleString;
}

No comments:

Post a Comment