Who knew you could do that in Valence?


As we prepare for next month's release of Valence 5.1, we thought it'd be both interesting and useful to summarize some of the blog post contents in a single, categorized list.  From customizing the look and feel of the Valence Portal to tips on back-end and front-end development, there's likely to be at least one or two blog posts to pique your interest. Without further ado, here's a categorized breakdown of the more useful blog posts from the past few years: 

Useful information extractable from the IBM i Apache Server

CategoryApacheEnvironment VariablesTip of the MonthValence

With every user action in the browser that results in a call to a Valence instance running on your IBM i Power Server, a wealth of data about the user's session is sent to the integrated Apache Server.  This information can be accessed by your back-end RPG programs to potentially alter how they respond to the front-end. Want to know what URL is on the user's browser page?  Or what type of browser is being used?

Understanding back-end issues with the Valence Errors app

Categoryerror loggingTip of the MonthValence

In a typical Valence app you have a myriad of front-end UI logic working in tandem with back-end RPG programs that process AJAX calls and perform functions to retrieve or update IBM i data.  Whenever something goes wrong on the front-end, you can typically zero in on the issue by peering into the browser's console.

Put a link on it: Launching Valence apps directly from a URL


valenceapplinkSometimes the best way to get a business point across to someone, or get them to look at something at all, is to make it insanely easy for them to get where they need to go with a single click.  The Valence 5 portal makes it possible to do this with just about any app or Nitro Query you've got set up.  Simply construct a special URL and email it!

Using a Validation Program with Nitro Query’s Edit Grid Widget

CategoryEdit gridNitro App BuilderTip of the MonthValenceValidation Program

One of the most powerful widgets available in Nitro Query is the Edit Grid.  Traditionally queries are read-only, but with an Edit Grid you can actually allow users to update records in a single-file data source — right from within the query itself!  In some cases you may find you can simply create a query for data entry in lieu of coding an actual app, saving yourself a ton of time and effort.

Handling Null Dates with Date Selectors

CategorycalendardateExt JSnull dateTip of the MonthValence

When working with dates on IBM i you will often need to deal with null date values of 0001-01-01.  Depending on the display format you’ve chosen, in a Valence UI designed with Ext JS a null date field will be rendered like this: date_picker_1 When the user clicks on the date selector trigger here, a calendar pops up based on the year and month specified in the field.

Styling .xlsx Spreadsheet Cells in Valence 4.2

CategoryExt JSTip of the MonthValenceVVOUTXLSX

The VVOUT spreadsheet procedures were enhanced in Valence 4.2 to support the generation of Excel spreadsheets in .xlsx format.  You can see a practical example of these procedures in action by clicking on the download button on any of the entities in the Portal Admin app (the corresponding backend RPG code is located in various VVADM*** source members). The procedure for applying styling to cells in these .xlsx-based spreadsheets is a bit different from the old .xls formatting used in prior versions of Valence.  

Setting up Valence on IBM i for External Access with SSL

CategoryApacheIBM iSSLTip of the MonthValence

You already know that installing Valence on IBM i and using it internally within your corporate network is fast and easy.  Your company’s employees should also be able to access your Valence instances through a standard VPN connection when they are located outside of your company’s physical network.  But what about when you need to provide secure access to Valence apps to the outside world directly through the Internet?

Using a Dynamically Set App Path

CategoryTip of the MonthValence

Normally the paths associated with Valence apps are hard-coded to specific values that never change. The users clicks on the app and the Valence Portal directs them to a specific IFS path or web page. But what if you had a special use case where you wanted to alter the IFS path or URL based on who is logged in, or depending on which environment they're using? This can be done using a special exit program technique that will dynamically alter the path of an app upon being launched from the Valence Portal.