We're currently having problems with one of our old Domino servers. The HTTP task randomly hangs.
In the process of looking for help to track down the reason, I found this document from IBM.
Collecting data for HTTP hang or performance issues on a Lotus Domino server
Wednesday, September 28, 2011
Tuesday, September 27, 2011
Indicator for all partial refreshes
Sometimes partial updates take a while. To make users aware of updates happening, I made a small JS object that automatically shows a dojox.widget.Standby over the area being updated. Initially I thought that it would be too much, showing the mask over every refreshed area. So far, I quite like the effect.
The app isn't in production yet, so I don't know how users will react, but hopefully they will appreciate being made aware of that things are happening.
To load the object, put this in a JavaScript library (client side)
The app isn't in production yet, so I don't know how users will react, but hopefully they will appreciate being made aware of that things are happening.
To load the object, put this in a JavaScript library (client side)
dojo.addOnLoad(function(){ new StandbyWidget(); });
The default background color is bright yellow. To override, simply put a hex string in the "constructor" call.dojo.addOnLoad(function(){ new StandbyWidget( '#555'); }); // Dark grey
To use the code snippet below, you also need the partial event hijackervar StandbyWidget = function( backgroundColor ){
dojo.require( 'dojox.widget.Standby' );
this.widget = new dojox.widget.Standby();
this.widget.attr( 'color', backgroundColor || '#ffe' );
document.body.appendChild( this.widget.domNode );
this.widget.startup();
dojo.subscribe( 'partialrefresh-init', this, function( method, form, targetId ){
if( targetId && targetId !== '@none' ){ this.show( targetId ); }
});
dojo.subscribe( 'partialrefresh-complete', this, function( method, form, targetId ){
if( targetId && targetId !== '@none' ){ this.hide(); }
});
dojo.subscribe( 'partialrefresh-error', this, function( method, form, targetId ){
if( targetId && targetId !== '@none' ){ this.hide(); }
});
}
StandbyWidget.prototype = {
show: function( targetId ){
this.widget.attr( 'target', targetId );
this.widget.show();
},
hide: function(){
this.widget.hide();
}
}
Labels:
code snippet,
xpages
Monday, September 26, 2011
Using themeId for maintainability
In an application I'm currently working on, there are several categorized views with number-/totals columns. As the number of views/columns increased, I looked for a way to make styling of the columns more maintainable.
The solution I found was using themeId on the columns and calling a SSJS function in the theme, that generates the style classes.
I chose numberColumn as the name for the themeId.
Regular column cells will get class="numberCell".
Totals column cells will get class="numberCell totalsCell".
Category column cells will get class="numberCell categoryCell".
All I have to do to add dynamic styling to future columns is to set themeId on the column to numberCell.
The solution I found was using themeId on the columns and calling a SSJS function in the theme, that generates the style classes.
I chose numberColumn as the name for the themeId.
In theme
<control>
<name>numberColumn</name>
<property>
<name>styleClass</name>
<value>#{javascript:return StyleHelper.getNumberColumnStyleClass( this );}</value>
</property>
</control>
this refers to the column object.SSJS code
var StyleHelper = {
// Used to calculate styleClass for a number column
getNumberColumnStyleClass: function( column ){
try {
var entry = column.getViewRowData();
var styleClass = 'numberCell';
if( entry.isCategory() ){ styleClass += ' categoryCell'; }
if( entry.isTotal() ){ styleClass += ' totalsCell'; }
return styleClass;
} catch( e ){ /* Exception handling */ }
}
}
Regular column cells will get class="numberCell".
Totals column cells will get class="numberCell totalsCell".
Category column cells will get class="numberCell categoryCell".
All I have to do to add dynamic styling to future columns is to set themeId on the column to numberCell.
Labels:
random tip,
themes,
xpages