After redesigning QueryDimension to allow grater member inclusion functionality, I had to design a user interface to allow the user to exploit that functionality. I started by implementing a generic (non olap related) tree faces component to display the hierarchy and allow member navigation. I considered using a RichFaces or MyFaces Tomahawk tree component, but I've decided to implement a simple one to keep the project as selfcontained as possible. I'm not going to detail its design, suffice to say that it acts as <h:dataTable> but with a hierarchical data model implemented by a nested <treeItems> component, responsible of finding the children of a given data item.
My problem was providing an easy to use interface to let the user execute, at least, six actions (include or exclude for each of the basic operators: MEMBER, CHILDREN, DESCENDANTS) on every member of the hierarchy. Those were considered options:
- A contextual menu for each member.
Probably the best solution but too complex, it will delay higher priority features (e.g.: filtering) - Three buttons to toggle inclusion for each operator.The simplest solution to implement, but so many buttons would clutter the UI.
- An operator selector, global for the whole component, plus one button to toggle each member inclusion/exclusion.The chosen solution. It allows every inclusion/exclusion operation allowed by QueryHierarchy and is "window-savvy".
The color and font weight of the members label indicate if the member is actually included or not in the query hierarchy. The operator menu over the hierarchy tree allows the user to select the operator of the exclusion/inclusion and, finally, the button beside the members label allows the user to toggle inclusion/exclusion of that member using the selected operator. The image in the button tells the user if clicking the button will result in an inclusion or exclusion; and the small label for the button provides a reminder of the selected operator.
The following table shows the common palms per hour and the home edge for comp functions various video games. The house edge figures are higher than these above, end result of|as a outcome of} the above figures assume optimum technique, and those beneath mirror player errors and common type of bet made. This table was given to me anonymously by an govt with a major Strip on line casino and is used casinoawe.com for score players. The house edge is defined because the ratio of the common loss to the preliminary bet. In some video games the beginning wager isn't essentially the ending wager. For example in blackjack, let it experience, and Caribbean stud poker, the player may increase their bet when the odds favor doing so.
ReplyDelete