Skip to main content link. Accesskey S
  • Help
  • HCL Logo
  • HCL Notes and Domino Application Development wiki
  • THIS WIKI IS READ-ONLY. Individual names altered for privacy purposes.
  • HCL Forums and Blogs
  • Home
  • Product Documentation
  • Community Articles
  • Learning Center
  • API Documentation
Search
Community Articles > Developing Applications > Developing XPage Applications > NotesViewNavigator sample JavaScript code for XPages
  • Share Show Menu▼
  • Subscribe Show Menu▼

Recent articles by this author

NotesName sample JavaScript code for XPages

Here is sample JavaScript code for the class NotesName. Eventually this sample code will find its way into the documentation. Corrections and comments are appreciated.

NotesMIMEEntity sample JavaScript code for XPages

Here is sample JavaScript code for the class NotesMIMEEntity. Eventually this sample code will find its way into the documentation. Corrections and comments are appreciated.

NotesViewEntryCollection sample JavaScript code for XPages

Here is sample JavaScript code for the class NotesViewEntryCollection. Eventually this sample code will find its way into the documentation. Corrections and comments are appreciated.

NotesViewNavigator sample JavaScript code for XPages

Here is sample JavaScript code for the class NotesViewNavigator. Eventually this sample code will find its way into the documentation. Corrections and comments are appreciated.

NotesViewEntry sample JavaScript code for XPages

Here is sample JavaScript code for the class NotesViewEntry. Eventually this sample code will find its way into the documentation. Corrections and comments are appreciated.
Community articleNotesViewNavigator sample JavaScript code for XPages
Added by ~Elizabeth Umkroskiettu | Edited by ~Elizabeth Umkroskiettu on April 15, 2011 | Version 2
  • Actions Show Menu▼
expanded Abstract
collapsed Abstract
Here is sample JavaScript code for the class NotesViewNavigator. Eventually this sample code will find its way into the documentation. Corrections and comments are appreciated.
ShowTable of Contents
HideTable of Contents
    • 0.1 CacheSize
    • 0.2 Count
    • 0.3 EntryOptions
    • 0.4 MaxLevel
    • 0.5 ParentView
    • 0.6 getChild
    • 0.7 getCurrent
    • 0.8 getFirst
    • 0.9 getFirstDocument
    • 0.10 getLast
    • 0.11 getLastDocument
    • 0.12 getNext
    • 0.13 getNextCategory
    • 0.14 getNextDocument
    • 0.15 getNextSibling
    • 0.16 getNth
    • 0.17 getParent
    • 0.18 getPos
    • 0.19 getPrev
    • 0.20 getPrevCategory
    • 0.21 getPrevDocument
    • 0.22 getPrevSibling
    • 0.23 gotoChild
    • 0.24 gotoEntry
    • 0.25 gotoFirst
    • 0.26 gotoFirstDocument
    • 0.27 gotoLast
    • 0.28 gotoLastDocument
    • 0.29 gotoNext
    • 0.30 gotoNextCategory
    • 0.31 gotoNextDocument
    • 0.32 gotoNextSibling
    • 0.33 gotoParent
    • 0.34 gotoPos
    • 0.35 gotoPrev
    • 0.36 gotoPrevCategory
    • 0.37 gotoPrevDocument
    • 0.38 gotoPrevSibling
    • 0.39 markAllRead
    • 0.40 markAllUnread
    • 0.41 skip

CacheSize


This beforePageLoad event creates a view navigator with no cache.

var nav1:NotesViewNavigator = database.getView("By category and date").createViewNav();
nav1.setCacheSize(0);


Count


This computed field returns a count of all the entries in a view.

var v:NotesView = database.getView("main");
var nav:NotesViewNavigator = v.createViewNav();
return nav.getCount().toFixed() + " total entries";


EntryOptions


This beforePageLoad event creates a view navigator and sets options.

var nav1:NotesViewNavigator = database.getView("By category and date").createViewNav();
nav1.setEntryOptions(
NotesViewNavigator.VN_ENTRYOPT_NOCOLUMNVALUES +
NotesViewNavigator.VN_ENTRYOPT_NOCOUNTDATA);
sessionScope.nav1 = nav1;


This computed field tests a view navigator for an entry option.

return ((sessionScope.nav1.getEntryOptions() & 
NotesViewNavigator.VN_ENTRYOPT_NOCOLUMNVALUES) > 0) ?
"No column values" : "Yes column values";


MaxLevel


This beforePageLoad event creates a view navigator and limits the levels to 8.

var nav1:NotesViewNavigator = database.getView("By category and date").createViewNav();
nav1.setMaxLevel(8);


ParentView


This button determines whether a document is in a view.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
var doc:NotesDocument = currentDocument.getDocument();
if (nav.gotoEntry(doc)) {
	requestScope.status = "Current document is in this view: " + 
		nav.getParentView().getName();
} else{
	requestScope.status = "Current document is not in this view: " + 
		nav.getParentView().getName();
}


getChild


This button gets all entries in a view in hierarchical order.

var nav:NotesViewNavigator = database.getView("By category").createViewNav();
var entry:NotesViewEntry = nav.getFirst();
getentry();

function getentry() { // recursive
	if (entry == null) return;
	if (entry.isCategory()) {
		requestScope.status += "\n" +
		entry.getPosition(".") + " " +
		entry.getColumnValues().firstElement().toString();
	} else if (entry.isDocument()) {
		requestScope.status += "\n" +
		entry.getPosition(".") + " " +
		entry.getColumnValues().elementAt(1).toString();
	} else if (entry.isTotal())  {
		requestScope.status += "\n" +
		entry.getPosition(".") + " " +
		entry.getColumnValues().elementAt(3).toString();
	}
	// try for first child
	// if no child, try for next sibling
	// if no sibling, go up a level and try for next sibling
	var tmpentry:NotesViewEntry = nav.getChild(entry);
	if (tmpentry == null) tmpentry = nav.getNextSibling(entry);
	if (tmpentry == null) {
		tmpentry = nav.getParent(entry);
		if (tmpentry != null) tmpentry = nav.getNextSibling(tmpentry);
	}
	entry.recycle();
	entry = tmpentry;
	getentry();
	return;
}


getCurrent


This button gets all the first-level category entries in a categorized view in reverse order.

var nav:NotesViewNavigator = database.getView("By category").createViewNav();
var entry:NotesViewEntry = nav.getLast();
do {
	entry = nav.getCurrent();
} while (nav.gotoParent());
while (entry != null) {
	if (!entry.isTotal()) {
		requestScope.status += "\n" +
		entry.getPosition(".") + " " +
		entry.getColumnValues().firstElement().toString() + " has" +
		entry.getDescendantCount().toFixed() + " total entries";
	}
	var tmpentry:NotesViewEntry = nav.getPrevSibling(entry);
	entry.recycle();
	entry = tmpentry;
}


getFirst


This button gets all the first-level category entries in a categorized view.

var nav:NotesViewNavigator = database.getView("By category").createViewNav();
var entry:NotesViewEntry = nav.getFirst();
while (entry != null && !entry.isTotal()) {
	requestScope.status += "\n" +
	entry.getPosition(".") + " " +
	entry.getColumnValues().firstElement().toString() + " has" +
	entry.getDescendantCount().toFixed() + " total entries";
	var tmpentry:NotesViewEntry = nav.getNextSibling(entry);
	entry.recycle();
	entry = tmpentry;
}


getFirstDocument


This button gets all the document entries in a view.

var v:NotesView = database.getView("By category");
var nav:NotesViewNavigator = v.createViewNav();
var entry:NotesViewEntry = nav.getFirstDocument();
while (entry != null) {
	requestScope.status += "\n" +
		entry.getColumnValues().elementAt(1).toString();
	var tmpentry:NotesViewEntry = nav.getNextDocument();
	entry.recycle();
	entry = tmpentry;
}


getLast


This computed field displays the grand total for a view that has totals for the fourth column.

var nav:NotesViewNavigator = database.getView("By category").createViewNav();
var entry:NotesViewEntry = nav.getLast();
return "Total: " + entry.getColumnValues().elementAt(3).toFixed();


getLastDocument


This button gets all the document entries in a view in reverse order.

var v:NotesView = database.getView("By category");
var nav:NotesViewNavigator = v.createViewNav();
var entry:NotesViewEntry = nav.getLastDocument();
while (entry != null) {
	requestScope.status += "\n" +
		entry.getColumnValues().elementAt(1).toString();
	var tmpentry:NotesViewEntry = nav.getPrevDocument();
	entry.recycle();
	entry = tmpentry;
}


getNext


This button gets all the entries in a view.

var v:NotesView = database.getView("By category");
var nav:NotesViewNavigator = v.createViewNav();
var entry:NotesViewEntry = nav.getFirst();
while (entry != null) {
	if (entry.isDocument()) {
		requestScope.status += "\n\t" +
		entry.getColumnValues().elementAt(1).toString();
	} else if (entry.isCategory()) {
		requestScope.status += "\n" +
		entry.getColumnValues().elementAt(0).toString();
	} else {
		requestScope.status += "\n" +
		entry.getColumnValues().elementAt(3).toFixed();
	}
	var tmpentry:NotesViewEntry = nav.getNext(entry);
	entry.recycle();
	entry = tmpentry;
}


getNextCategory


This button gets all the category entries in a view.

var v:NotesView = database.getView("By category and date");
var nav:NotesViewNavigator = v.createViewNav();
var entry:NotesViewEntry = nav.getFirst();
while (entry != null) {
	var tabs:string = "";
	for (var i=0; i<entry.getIndentLevel(); i++) tabs = tabs + "\t";
	requestScope.status += "\n" + tabs +
		entry.getColumnValues().elementAt(entry.getIndentLevel()).toString();
	var tmpentry:NotesViewEntry = nav.getNextCategory();
	entry.recycle();
	entry = tmpentry;
}


getNextDocument


This button gets all the document entries in a view.

var v:NotesView = database.getView("By category");
var nav:NotesViewNavigator = v.createViewNav();
var entry:NotesViewEntry = nav.getFirstDocument();
while (entry != null) {
	requestScope.status += "\n" +
		entry.getColumnValues().elementAt(1).toString();
	var tmpentry:NotesViewEntry = nav.getNextDocument();
	entry.recycle();
	entry = tmpentry;
}


getNextSibling


This button gets all the first-level category entries in a categorized view.

var nav:NotesViewNavigator = database.getView("By category").createViewNav();
var entry:NotesViewEntry = nav.getFirst();
while (entry != null && !entry.isTotal()) {
	requestScope.status += "\n" +
	entry.getPosition(".") + " " +
	entry.getColumnValues().firstElement().toString() + " has" +
	entry.getDescendantCount().toFixed() + " total entries";
	var tmpentry:NotesViewEntry = nav.getNextSibling(entry);
	entry.recycle();
	entry = tmpentry;
}


getNth


This onclick event for an edit box displays information for a view entry identified by position. A global variable tracks the position. The user clicks the edit box to get the next entry.

var v:NotesView = database.getView("main");
var nav:NotesViewNavigator = v.createViewNav();
sessionScope.nth++;
var entry:NotesViewEntry = nav.getNth(sessionScope.nth * 1);
if (entry == null) {
	sessionScope.nth = 1;
	var entry:NotesViewEntry = nav.getNth(1);
}
// requestScope.entry is bound to the edit box of this onclick event
requestScope.entry = entry.getPosition(".") + " " +
	entry.getColumnValues().firstElement();


getParent


This button gets all entries in a view in hierarchical order.

var nav:NotesViewNavigator = database.getView("By category").createViewNav();
var entry:NotesViewEntry = nav.getFirst();
getentry();

function getentry() { // recursive
	if (entry == null) return;
	if (entry.isCategory()) {
		requestScope.status += "\n" +
		entry.getPosition(".") + " " +
		entry.getColumnValues().firstElement().toString();
	} else if (entry.isDocument()) {
		requestScope.status += "\n" +
		entry.getPosition(".") + " " +
		entry.getColumnValues().elementAt(1).toString();
	} else if (entry.isTotal())  {
		requestScope.status += "\n" +
		entry.getPosition(".") + " " +
		entry.getColumnValues().elementAt(3).toString();
	}
	// try for first child
	// if no child, try for next sibling
	// if no sibling, go up a level and try for next sibling
	var tmpentry:NotesViewEntry = nav.getChild(entry);
	if (tmpentry == null) tmpentry = nav.getNextSibling(entry);
	if (tmpentry == null) {
		tmpentry = nav.getParent(entry);
		if (tmpentry != null) tmpentry = nav.getNextSibling(tmpentry);
	}
	entry.recycle();
	entry = tmpentry;
	getentry();
	return;
}


getPos


This button gets the entry at a view position input by a user.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
var pos:string = requestScope.query;
try {
	var entry:NotesViewEntry = nav.getPos(pos, ".");
} catch(e) {
	requestScope.status = "Incorrectly formed: " + pos;
	return;
}
if (entry != null) {
	if (entry.isDocument()) {
		requestScope.status = entry.getPosition(".") + " " +
		entry.getDocument().getItemValueString("subject");
	} else if (entry.isCategory()) {
		requestScope.status = entry.getPosition(".") + " " +
		entry.getColumnValues().elementAt(entry.getIndentLevel());
	} else {
		requestScope.status = entry.getPosition(".") + " " +
		entry.getColumnValues().elementAt(3);
	}
	
} else{
	requestScope.status = "Position " + pos + " is not valid in this view: ";
}


getPrev


This button gets all the entries in a categorized view in reverse order.

var v:NotesView = database.getView("By category and date");
var nav:NotesViewNavigator = v.createViewNav();
var entry:NotesViewEntry = nav.getLast();
while (entry != null) {
	if (entry.isDocument()) {
		requestScope.status += "\n" + "\t" +
		entry.getColumnValues().elementAt(2).toString();
	} else if (entry.isCategory()) {
		requestScope.status += "\n" +
		entry.getColumnValues().elementAt(entry.getIndentLevel()).toString();
	}
	var tmpentry:NotesViewEntry = nav.getPrev(entry);
	entry.recycle();
	entry = tmpentry;
}


getPrevCategory


This button gets all the category entries in a view in reverse order.

var v:NotesView = database.getView("By category and date");
var nav:NotesViewNavigator = v.createViewNav();
var entry:NotesViewEntry = nav.getLast();
if (entry != null) entry = nav.getPrevCategory();
while (entry != null) {
	var tabs:string = "";
	for (var i=0; i<entry.getIndentLevel(); i++) tabs = tabs + "\t";
	requestScope.status += "\n" + tabs +
		entry.getColumnValues().elementAt(entry.getIndentLevel()).toString();
	var tmpentry:NotesViewEntry = nav.getPrevCategory();
	entry.recycle();
	entry = tmpentry;
}


getPrevDocument


This button gets all the document entries in a view in reverse order.

var v:NotesView = database.getView("By category");
var nav:NotesViewNavigator = v.createViewNav();
var entry:NotesViewEntry = nav.getLastDocument();
while (entry != null) {
	requestScope.status += "\n" +
		entry.getColumnValues().elementAt(1).toString();
	var tmpentry:NotesViewEntry = nav.getPrevDocument();
	entry.recycle();
	entry = tmpentry;
}


getPrevSibling


This button gets all the first-level category entries in a categorized view in reverse order.

var nav:NotesViewNavigator = database.getView("By category").createViewNav();
var entry:NotesViewEntry = nav.getLast();
do {
	entry = nav.getCurrent();
} while (nav.gotoParent());
while (entry != null) {
	if (!entry.isTotal()) {
		requestScope.status += "\n" +
		entry.getPosition(".") + " " +
		entry.getColumnValues().firstElement().toString() + " has" +
		entry.getDescendantCount().toFixed() + " total entries";
	}
	var tmpentry:NotesViewEntry = nav.getPrevSibling(entry);
	entry.recycle();
	entry = tmpentry;
}


gotoChild


This button positions a view navigator according to user input of a decimal form that designates level and sequence number. For example, 2.5.1 means go to the second entry, drop one level, go to the fifth entry, drop a level, and go to the first entry.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
var entry:NotesViewEntry = null;
var firstTime = true;
var position:string = requestScope.query;
if (position.isEmpty()) {
	requestScope.status += "\nNo position";
	return;
}
var p:int = 0;
var n:int = 0;
var i:int = 0;
// Expecting position of form p.p ... .p
// Each iteration processes one p
while (!position.isEmpty()) {
	// Parse position and verify as number
	n = position.indexOf(".");
	if (n > -1) {
		p = parseInt(position.left(n));
		position = position.right(position.length - n -1);
	} else {
		p = parseInt(position);
		position = "";
	}
	if (isNaN(p)) {
		requestScope.status += "\nInvalid number";
		return;
	}
	// Go to the first entry for the level being processed
	if (!firstTime) {
		if (!nav.gotoChild()) {
			requestScope.status += "\nInvalid position";
			return;
		}
	} else {
		if (!nav.gotoFirst()) {
			requestScope.status += "\nView empty";
			return;
		}
		firstTime = false;
	}
	// Go to entry # p on the level being processed
	for (var i=1; i<(p); i++) {
		if (!nav.gotoNextSibling()) {
			requestScope.status += "\nInvalid position";
			return;
		}
	}
}
// Get the entry
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
requestScope.status += entry.getColumnValues().elementAt(entry.getIndentLevel());


gotoEntry


This button determines whether a document is in a view.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
var doc:NotesDocument = currentDocument.getDocument();
if (nav.gotoEntry(doc)) {
	requestScope.status = "Current document is in this view: " + 
		nav.getParentView().getName();
} else{
	requestScope.status = "Current document is not in this view: " + 
		nav.getParentView().getName();
}


gotoFirst


This button gets a view entry by number where 1 is the first entry and -1 is the last entry.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth entry where 1 is the first entry
if (n > 0) {
	nav.gotoFirst();
	for (var i = 1; i < n; i++) {
		nav.gotoNext();
	}
// For negative number, get the -nth entry where -1 is the last entry
} else {
	nav.gotoLast();
	for (var i = -1; i > n; i--) {
		nav.gotoPrev();
	}
}
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
if (entry.isCategory()) {
	requestScope.status += entry.getColumnValues().elementAt(entry.getIndentLevel());
} else if (entry.isDocument()) {
	requestScope.status += entry.getDocument().getItemValueString("subject");
}


gotoFirstDocument


his button gets a document view entry by number where 1 is the first document and -1 is the last document.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth document where 1 is the first document
if (n > 0) {
	nav.gotoFirstDocument();
	for (var i = 1; i < n; i++) {
		nav.gotoNextDocument();
	}
// For negative number, get the -nth document where -1 is the last document
} else {
	nav.gotoLastDocument();
	for (var i = -1; i > n; i--) {
		nav.gotoPrevDocument();
	}
}
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
requestScope.status += entry.getDocument().getItemValueString("subject");


gotoLast


This button gets a view entry by number where 1 is the first entry and -1 is the last entry.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth entry where 1 is the first entry
if (n > 0) {
	nav.gotoFirst();
	for (var i = 1; i < n; i++) {
		nav.gotoNext();
	}
// For negative number, get the -nth entry where -1 is the last entry
} else {
	nav.gotoLast();
	for (var i = -1; i > n; i--) {
		nav.gotoPrev();
	}
}
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
if (entry.isCategory()) {
	requestScope.status += entry.getColumnValues().elementAt(entry.getIndentLevel());
} else if (entry.isDocument()) {
	requestScope.status += entry.getDocument().getItemValueString("subject");
}


gotoLastDocument


This button gets a document view entry by number where 1 is the first document and -1 is the last document.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth document where 1 is the first document
if (n > 0) {
	nav.gotoFirstDocument();
	for (var i = 1; i < n; i++) {
		nav.gotoNextDocument();
	}
// For negative number, get the -nth document where -1 is the last document
} else {
	nav.gotoLastDocument();
	for (var i = -1; i > n; i--) {
		nav.gotoPrevDocument();
	}
}
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
requestScope.status += entry.getDocument().getItemValueString("subject");


gotoNext


This button gets a view entry by number where 1 is the first entry and -1 is the last entry.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth entry where 1 is the first entry
if (n > 0) {
	nav.gotoFirst();
	for (var i = 1; i < n; i++) {
		nav.gotoNext();
	}
// For negative number, get the -nth entry where -1 is the last entry
} else {
	nav.gotoLast();
	for (var i = -1; i > n; i--) {
		nav.gotoPrev();
	}
}
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
if (entry.isCategory()) {
	requestScope.status += entry.getColumnValues().elementAt(entry.getIndentLevel());
} else if (entry.isDocument()) {
	requestScope.status += entry.getDocument().getItemValueString("subject");
}


gotoNextCategory


This button gets a category view entry by number where 1 is the first category and -1 is the last category.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth category where 1 is the first category
if (n > 0) {
	nav.gotoFirst();
	for (var i = 1; i < n; i++) {
		nav.gotoNextCategory();
	}
// For negative number, get the -nth category where -1 is the last category
} else {
	nav.gotoLast();
	for (var i = 0; i > n; i--) {
		nav.gotoPrevCategory();
	}
}
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
requestScope.status += entry.getColumnValues().elementAt(entry.getIndentLevel());


gotoNextDocument


This button gets a document view entry by number where 1 is the first document and -1 is the last document.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth document where 1 is the first document
if (n > 0) {
	nav.gotoFirstDocument();
	for (var i = 1; i < n; i++) {
		nav.gotoNextDocument();
	}
// For negative number, get the -nth document where -1 is the last document
} else {
	nav.gotoLastDocument();
	for (var i = -1; i > n; i--) {
		nav.gotoPrevDocument();
	}
}
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
requestScope.status += entry.getDocument().getItemValueString("subject");


gotoNextSibling


This button positions a view navigator according to user input of a decimal form that designates level and sequence number. For example, 2.5.1 means go to the second entry, drop one level, go to the fifth entry, drop a level, and go to the first entry.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
var entry:NotesViewEntry = null;
var firstTime = true;
var position:string = requestScope.query;
if (position.isEmpty()) {
	requestScope.status += "\nNo position";
	return;
}
var p:int = 0;
var n:int = 0;
var i:int = 0;
// Expecting position of form p.p ... .p
// Each iteration processes one p
while (!position.isEmpty()) {
	// Parse position and verify as number
	n = position.indexOf(".");
	if (n > -1) {
		p = parseInt(position.left(n));
		position = position.right(position.length - n -1);
	} else {
		p = parseInt(position);
		position = "";
	}
	if (isNaN(p)) {
		requestScope.status += "\nInvalid number";
		return;
	}
	// Go to the first entry for the level being processed
	if (!firstTime) {
		if (!nav.gotoChild()) {
			requestScope.status += "\nInvalid position";
			return;
		}
	} else {
		if (!nav.gotoFirst()) {
			requestScope.status += "\nView empty";
			return;
		}
		firstTime = false;
	}
	// Go to entry # p on the level being processed
	for (var i=1; i<(p); i++) {
		if (!nav.gotoNextSibling()) {
			requestScope.status += "\nInvalid position";
			return;
		}
	}
}
// Get the entry
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
requestScope.status += entry.getColumnValues().elementAt(entry.getIndentLevel());


gotoParent


This button gets all the first-level category entries in a categorized view in reverse order.

var nav:NotesViewNavigator = database.getView("By category").createViewNav();
var entry:NotesViewEntry = nav.getLast();
do {
	entry = nav.getCurrent();
} while (nav.gotoParent());
while (entry != null) {
	if (!entry.isTotal()) {
		requestScope.status += "\n" +
		entry.getPosition(".") + " " +
		entry.getColumnValues().firstElement().toString() + " has" +
		entry.getDescendantCount().toFixed() + " total entries";
	}
	var tmpentry:NotesViewEntry = nav.getPrevSibling(entry);
	entry.recycle();
	entry = tmpentry;
}


gotoPos


This button determines whether a position input by a user is valid for a view.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
var pos:string = requestScope.query;
try {
	var result:boolean = nav.gotoPos(pos, ".");
} catch(e) {
	requestScope.status = "Incorrectly formed: " + pos;
	return;
}
if (result) {
	requestScope.status = "Position " + pos + " is valid in this view: " + 
		nav.getParentView().getName();
} else{
	requestScope.status = "Position " + pos + " is not valid in this view: " + 
		nav.getParentView().getName();
}


gotoPrev


This button gets a view entry by number where 1 is the first entry and -1 is the last entry.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth entry where 1 is the first entry
if (n > 0) {
	nav.gotoFirst();
	for (var i = 1; i < n; i++) {
		nav.gotoNext();
	}
// For negative number, get the -nth entry where -1 is the last entry
} else {
	nav.gotoLast();
	for (var i = -1; i > n; i--) {
		nav.gotoPrev();
	}
}
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
if (entry.isCategory()) {
	requestScope.status += entry.getColumnValues().elementAt(entry.getIndentLevel());
} else if (entry.isDocument()) {
	requestScope.status += entry.getDocument().getItemValueString("subject");
}


gotoPrevCategory


This button gets a category view entry by number where 1 is the first category and -1 is the last category.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth category where 1 is the first category
if (n > 0) {
	nav.gotoFirst();
	for (var i = 1; i < n; i++) {
		nav.gotoNextCategory();
	}
// For negative number, get the -nth category where -1 is the last category
} else {
	nav.gotoLast();
	for (var i = 0; i > n; i--) {
		nav.gotoPrevCategory();
	}
}
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
requestScope.status += entry.getColumnValues().elementAt(entry.getIndentLevel());


gotoPrevDocument


This button gets a document view entry by number where 1 is the first document and -1 is the last document.

var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth document where 1 is the first document
if (n > 0) {
	nav.gotoFirstDocument();
	for (var i = 1; i < n; i++) {
		nav.gotoNextDocument();
	}
// For negative number, get the -nth document where -1 is the last document
} else {
	nav.gotoLastDocument();
	for (var i = -1; i > n; i--) {
		nav.gotoPrevDocument();
	}
}
entry = nav.getCurrent();
requestScope.status += "\n" + entry.getPosition(".") + " ";
requestScope.status += entry.getDocument().getItemValueString("subject");


gotoPrevSibling


This button gets a level-1 category view entry by number where 1 is the first level-1 category entry and -1 is the last level-1 category entry.

// This view has categories and ends with a total
var nav:NotesViewNavigator = database.getView("By category and date").createViewNav();
if (nav.getCount() == 0) return;
// User enters a number in the input box bound to requestScope.query
var n:int = parseInt(requestScope.query);
if (isNaN(n) || n == 0) n = 1;
// For positive number, get the nth level-1 category where 1 is the first category
if (n > 0) {
	nav.gotoFirst();
	for (var i = 1; i < n; i++) {
		nav.gotoNextSibling();
	}
// For negative number, get the -nth level-1 category where -1 is the last category
} else {
	nav.gotoLast();
	nav.gotoPrevSibling();
	for (var i = -1; i > n; i--) {
		nav.gotoPrevSibling();
	}
}
entry = nav.getCurrent();
if (entry.isTotal()) entry = nav.getPrevSibling();
requestScope.status += "\n" + entry.getPosition(".") + " ";
requestScope.status += entry.getColumnValues().elementAt(entry.getIndentLevel());


markAllRead


This button marks all unread documents in a view as read.

var v:NotesView = database.getView("main");
var nav:NotesViewNavigator = v.createViewNavFromAllUnread();
nav.markAllRead();


markAllUnread


This button marks all documents in a view as unread.

var nav:NotesViewNavigator = database.getView("main").createViewNav();
nav.markAllUnread();


skip


This button gets the first and every eighth entry in a view.

var nav:NotesViewNavigator = database.getView("main").createViewNav();
var n:int = 0;
if (nav.gotoFirst()) {
	do {
		var entry:NotesViewEntry = nav.getCurrent();
		requestScope.status += "\n" + 
			entry.getPosition(".") + "\t" +
			entry.getColumnValues().firstElement();
	} while (nav.skip(8) == 8)
}

  • Actions Show Menu▼


expanded Attachments (0)
collapsed Attachments (0)
Edit the article to add or modify attachments.
expanded Versions (2)
collapsed Versions (2)
Version Comparison     
VersionDateChanged by              Summary of changes
This version (2)Apr 15, 2011, 2:12:38 PM~Elizabeth Umkroskiettu  
1Mar 1, 2011, 7:20:49 PM~Ben Eljipypulettu  
expanded Comments (0)
collapsed Comments (0)
Copy and paste this wiki markup to link to this article from another article in this wiki.
Go ElsewhereStay ConnectedAbout
  • HCL Software
  • HCL Digital Solutions community
  • HCL Software support
  • BlogsDigital Solutions blog
  • Community LinkHCL Software forums and blogs
  • About HCL
  • Privacy
  • Accessibility