Posts Tagged ‘ssjs’

19 May 2014
0

Quick Tip: Lessen your JavaScript code with 1 liner IF Statements

Not many people know this, but for simple JavaScript “If” Statements, there’s a Syntax that allows you to write out the entire condition on one line.

Let’s take a quick If Statement and type it out the most common way:

1
2
3
4
5
6
7
8
var whatAreMondays = "";
var areMondaysBlue = false;
 
if(areMondaysBlue){
   whatAreMondays = 'Blue';
}else{
   whatAreMondays = 'Awesome';
}

Behold…the 1 liner Syntax:

variable = (condition) ? 'value if TRUE' : 'value if FALSE';

By using a question mark and a colon, we can convert the above If Statement to the following:

1
2
3
4
var whatAreMondays = "";
var areMondaysBlue = false;
 
whatAreMondays = (areMondaysBlue) ? 'Blue' : 'Awesome';

Simple, but effective :)

8 Nov 2013
0

Live chat assist about searching for data in a NotesView via XPages

Summary

This live chat got me thinking that it’s not a good idea to assume that people asking for help are seasoned Domino Developers who have moved to XPages. You’ll see towards the middle of the chat how I finally realized this.

Click here to view the Blog Post I submitted related to this query.

Enjoy :)

Live Chat – 25th October 2013

John Jardin:
Good day. How can I help :)
 
Guest:
Hello. How do I compare stored values in JavaScript?
 
John Jardin:
When you say stored values, are you referring to a Notes Document or a Document Data Source?
 
Guest:
Data Source. I store values in a Database.
 
John Jardin:
So let’s say you have a Document Data Source called “doc1″, and you want to compare 2 string values in that Data Source. In Server Side JavaScript, it would be something like….
 
1
2
3
if(doc1.getItemValueString("Field1") === doc1.getItemValueString("Field2")){
   //Do Something
}
Guest:
Ok but how will that access data from a Database? How do I check it with a list of values?
 
John Jardin:
So, do you understand and have you worked with LotusScript in the past?
 
Guest:
no…
 
John Jardin:
OK. So I will do you a favor. I will publish a blog post with a detailed example of how to achieve this. But I want to just make double sure I’m understanding you correctly. You want to take a value in one of the fields in your XPage and compare it to a list of values stored in the Notes Database in a View?
 
Guest:
Yes exactly.
 
John Jardin:
OK great. Please allow me a few hours to publish this.
 
Guest:
Yea sure n thank you.
26 Oct 2013
0

XPages Tip: Comparing a value in your XPages with backend data

I forget sometimes that many who have taken the path of XPages, are not necessarily existing Domino Developers who understand the Domino Object Model. This is a quick tip on how to take a field value from your XPages App, and compare it with data inside a Notes Database, and more specifically, a Notes View.

The Back-End Database

Let’s say you have a Notes Database with a view called “Fruits“. This view has 1 column called “Fruit Name” and is sorted in ascending order. Inside this view you have a few Notes Documents listed based on the following fruits captured:

FuitsViews

The XPage

Next, you have a very simple XPage with a Text Field called “inputFruit“, where a user will enter a fruit name of their choosing. The XPage also has a button called “Submit” and calls the following Server Side JavaScript Function – checkFruits();

FruitsXPage

The JavaScript Function

Here we create a JavaScript Function called checkFruits(), which will use the value entered and check if it exists in the Notes Database:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function checkFruits(){
   //Set our variables
   var doc:NotesDocument = null;
   var view:NotesView = database.getView("Fruits"); //Get a Handle on the Database View
   var key = getComponent("inputFruits").getValue(); //Get the entered value
 
   //Check if fruit entered exists
   doc = view.getDocumentByKey(key, true) //The 2nd parameter 'true' means 'Exact Match'
   if(doc !== null){
      print("The Fruit Exists");
   }else{
      print("No Fruits Founds");
   }
 
   //A JS Function should always return something
   return true;
}
Hope this helps :)
John
8 Oct 2013
6

Connect to a Notes Database on a remote Domino Server via SSJS

The other day I found myself needing to access a Notes Database on a Remote Domino Server via SSJS, but for some reason every one of my attempts failed miserably. No error messages written to the Console, no warnings, nothing.

Let’s quickly create a scenario

  • You have 2 Domino Servers: Server1/ACME and Server2/ACME.
  • On both Servers you have a Notes Database called “Test.nsf”.
  • On Server1/ACME you have a Notes Database with an XPage that calls the following SSJS:
1
2
3
4
5
6
7
var db:NotesDatabase = session.getDatabase("Server1/ACME", "Test.nsf");
 
if(db.isOpen()){
   print(db.getTitle());
}else{
   print('Cannot Open Notes Database');
}
  • Now, in the above example, you are trying to access a Notes Database on the same Server. The above code will successfully connect to the Notes Database and print the Database Title to the Server Console.
  • Next up, you have the following code that runs on the same Server:
1
2
3
4
5
6
7
var db:NotesDatabase = session.getDatabase("Server2/ACME", "Test.nsf");
 
if(db.isOpen()){
   print(db.getTitle());
}else{
   print('Cannot Open Notes Database');
}
  • In this example, you are trying to access “Test.nsf” on Server2/ACME, from a Script that’s running on Server1/ACME. This code will fail and will not provide you with any error message. The NotesDatabase Object will simply remain null.

The Reason

In all my years of developing Notes Applications, I never came across having to connect to a Database on a different Server. The reason the connection fails, is because Server1/ACME is not listed as a Trust Server in Server2/ACME’s Server Document in the Domino Directory.

The Solution

To resolve this issue is simple. The difficult part was finding the problem. If you have access to the Domino Directory on Server2/ACME, do the following:

  • Open the Domino Directory (Server Address Book) on Server2/ACME.
  • Under “Configuration”, click “Servers”, then click on “All Server Documents”.
  • Double click on the Server Document you want your code to connect to. (Server2/ACME in this example)
  • Under the Security Tab, in the bottom left section, there is a field called “Trusted Servers”.
  • In my scenario, this field is empty. Following this example, I would add “Server1/ACME” to this field.

Blog1

  • Save and Close.
  • Restart Server2/ACME.

Once you’ve restarted, your code will successfully connect to “Test.nsf” on Server2/ACME.

Till next time….cheers :)
John
9 Jul 2013
4

XPages Video Tutorial: Using Partial Refresh with a Navigator Control

So i felt it was time for an XPages Video Tutorial. I haven’t done one of these since March I think. In this video tutorial, I show you how to use the XPages Extension Library’s Navigator Control and modify the page’s content using partial refreshes.

Thanks to David Leedy for hosting this video on his NotesIn9 Series. He raises a very good point about the Dynamic Content Control and how it can be used in my example in this video to increase the performance of the XPage. Hopefully there will be a video on this soon.

I trust you will enjoy and please, as always, feel free to comment or ask questions.

Happy coding :)
John