Online Book Reader

Home Category

AJAX In Action [114]

By Root 3975 0

}

}

msg.Message.prototype.defaultIcon=function(){

if (this.priority<=msg.PRIORITY_LOW.id){

return msg.PRIORITY_LOW.icon;

}else if (this.priority==msg.PRIORITY_DEFAULT.id){

return msg.PRIORITY_DEFAULT.icon;

}else if (this.priority>=msg.PRIORITY_HIGH.id){

return msg.PRIORITY_HIGH.icon;

}

}

Licensed to jonathan zheng

Designing a notification system for Ajax

225

We define a global namespace object msg for our notification system, and within that an associative array from which any message can be looked up by a unique ID. The ID generation scheme will depend on the application using the framework.

We define three constants defining the three priority levels—low, default, and high—to which a message can be assigned. Each priority defines a default icon and lifetime (in seconds), both of which may be overridden by optional arguments in the constructor function. A lifetime value of -1, assigned to high-priority messages, indicates that the message will not expire automatically but will need to be dismissed explicitly, either by the user or by a callback function. 6.3.2 Defining user interface requirements

In MVC terms, we have provided a Model for our notification system here. To make it useful, we need to define a View. There are many possible ways of visually representing notifications. For this example, we have chosen to provide a status bar of sorts, upon which notifications are represented as icons, as illustrated in figure 6.2.

Figure 6.2 Status bar user interface for our notification

system. Individual messages are represented by their icons.

The red X icon is a standard icon provided for low-level notifications by our system. The third message object on the status bar has provided its own icon, a blue, shaded sphere, which overrides the default X. Each notification that is added to this status bar can be inspected as a tooltip device, as shown in figure 6.3. Figure 6.3 Messages on the status bar can be inspected by

rolling the mouse over the icon, causing a tooltip to appear.

This mechanism is designed to be unobtrusive. The status bar occupies relatively little screen space, but it is apparent to the user when a new notification has arrived by the presence of an additional icon. For more urgent messages, we may Licensed to jonathan zheng

226

CHAPTER 6

The user experience

Figure 6.4 Higher-priority messages are shown in a pop-up

dialog, in which messages are listed in order of priority.

wish for something more immediate. To this end, we will initially display only lowpriority messages in the status bar; default and high-priority messages will first appear in a pop-up dialog, as illustrated in figure 6.4, before being dismissed. The dialog can be modal or nonmodal. In the case of modal dialogs, we use a semitransparent layer to block off the rest of the user interface until the user dismisses the dialog. When dismissed, the dialog is represented by an icon on the right side of the status bar. In the following two sections, we’ll look at implementations of these features. 6.4 Implementing a notification framework

We’ve defined two main parts to our user interface: the status bar and the pop-up dialog. Let’s have a look at implementing this functionality now. The full notification system is quite complicated, so we’ll break it down into stages. First, we’ll enhance our Message object so that it knows how to render a user interface for itself, both for when it is sitting in the status bar as an icon and when it is showing its full details, either in a tooltip or within the pop-up dialog. Let’s begin with the implementation of the status bar component.

6.4.1 Rendering status bar icons

The status bar needs to render itself on the screen and contain the icons representing active messages. We delegate rendering of the individual icons to the Licensed to jonathan zheng

Implementing a notification framework

227

Message objects themselves. The Message will effectively implement a small-scale MVC pattern, with the rendering ability

Return Main Page Previous Page Next Page

®Online Book Reader