The CNX notebook.

Browse these blog posts from our Valence and IBM i experts to get techniques, advice and examples for building apps that transform your business world.

Using breadcrumbs to keep your users on track

In the legendary fairy tale of Hansel and Gretel, little Hansel comes up with the novel approach of laying a trail of breadcrumbs to help them find their way back home from unfamiliar territory. You can now do the digital equivalent to this in Nitro App Builder apps — minus the risk of the breadcrumbs being eaten by birds — as a way to help users know where they are in a particular process in the browser. Introduced to NAB in build...
Learn More

Make your grids POP with embedded images

If a picture is worth a thousand words, a multi-row grid with embedded cell images could be worth… millions! Most users are well-accustomed to the humdrum of spreadsheet-like grids loaded with row upon row of text. In some cases overrides to fonts, text colors or cell background shades can effectively draw attention to abnormal or unique values. But your grid cells need not be confined to mere words and numbers alone! If your grid includes a column that can be...
Learn More

Execute basic Valence Portal functions “mouse-free”

As seasoned users and developers on IBM i, many of us cut our teeth on the platform back in its hallowed green-screen days. This was an era dominated by heads-down typing, tabs, field exits and function keys. All conveniently at our fingertips. With that interface ingrained in our history, having to physically remove a hand from our trusty keyboard, reach for a mouse and (gasp!) click on something to trigger an action can sometimes feel like an inefficient annoyance — a tangible...
Learn More

Steer your users into entering correct dates

It’s tricky to think of every possible data element a user can mess up during, say, order entry. Fortunately there are a number of front-end mechanisms to gently coax users into getting the correct values entered into your various fields before they click the Save button. One such element involves a new configuration on the date-picking tool, which can be utilized on any form containing dates. In this month’s tip, we’ll look at a simple way you can configure a...
Learn More

Valence 6.2 has landed!

CNX is pleased to announce that Valence Version 6.2 is now generally available for download. Released as a Beta at the COMMON Expo in Denver last month, production build 6.2.20230515.0 marks the (gasp!) 19th major version of Valence since the original unveiling of Valence 1.0 at RPG World in Las Vegas way back in 2008. Historically, each new Valence release is jam-packed with multiple new features, and Valence 6.2 is no exception to the tradition!  For Nitro App Builder (NAB), many new visual and functional...
Learn More

Put some fancy logic in your grid’s summary row cells

By far the most popular widget for business apps created with Valence’s Nitro App Builder is the Grid, with multiple options for rendering data cells. From simple display features like text alignment, currency/date renderers and conditional cell colors, to graphical images, formulas and conditional if/then logic using basic JavaScript — just about anything on your IBM i system can be depicted in a user-friendly fashion using a Grid, and numeric values can be easily summarized by simply checking a box....
Learn More

Integrate spool files seamlessly into your apps

Every IBM i system generates spool files in one way or another. From job logs and compile listings to old-school inventory lists and sales reports, spool files can be quite prevalent. Many companies use tools to convert their spool files into PDFs that can be easily emailed or displayed, and Valence is no exception. The Spool File Viewer app included with Valence makes it easy for users to list spool files and download them in PDF form. But did you...
Learn More

Merging the best of both worlds: Edit Grids + Forms

An active business will frequently find a use case for building an app in which users add or update data in a table or physical file. Whether it be maintaining something simple like a list of locations, or something more complex involving multiple linked tables, an application to handle this can be built and deployed super fast using the edit grid widget in Nitro App Builder. An edit grid app can be configured so users either maintain the records directly...
Learn More

Pre-selecting grid rows for a superior user experience

Requests for new business applications often begin with basic lists of data — a perfect use case for a Nitro App Builder grid widget — then grow from there. In some cases a requirement may entail allowing users to click on multiple records in the list, then take an identical action against all the selected records at once. For instance, your marketing department might be seeking a list of active customers, from which a user would select a bunch of...
Learn More

Debugging back-end jobs in a production environment using the old-school 5250 STRDBG

Hard as we may try, it’s almost impossible to guarantee error-free execution of programs after promotion into a live environment. Even with a crack QA team doing in-depth testing beforehand, inevitably some program will eventually do something unexpected in production that requires debugging. And when such a problem happens in a multi-threaded CGI environment like Valence, determining which job to put into debug to diagnose the issue can be challenging when you’re using a 5250-based STRDBG session. In Valence instances dedicated...
Learn More

Leveraging NAB’s Export/Import Functionality

As your repository of data sources, widgets and apps created in Nitro App Builder grows, you’re likely to encounter situations where you need to move NAB objects from one instance to another, or even deploy entire NAB apps to another IBM i system or partition altogether. Likewise, you may occasionally have a need to retrieve a prior version of a data source/widget/app in order to “undo” some recent changes. All of these tasks can be achieved with NAB’s built-in import/export...
Learn More

Please your users with default filter values

In your never-ending quest to make your Nitro App Builder-based apps as user-friendly as possible, reducing the amount of typing and clicking required for users to get to the data they’re seeking can go a long way. If you know your users will be routinely setting a grid filter to, say, a specific date or date range relative to the current date, or a specific department based on where they work, etc., there are many ways to save them the...
Learn More

Investigate behind-the-scenes activities with Valence logs

One of the more important elements to keeping your users happy is ensuring the apps with which they regularly interact are performing snappily. As discussed in a previous blog post, users can become impatient or distracted when it takes too long to get to the data they need to do their jobs. So it’s critical that developers stay on top of these performance issues as much as possible. To aid in this endeavor, Valence includes a number of logging options that...
Learn More

Enhance your grids with “Super Columns”

Assembling multiple columns of business data into a grid using Nitro App Builder is so quick and simple that developers can easily overwhelm or even intimidate their users with apps containing huge walls of data. For the most optimal user experience, it’s important to present large lists of information as cleanly and clearly as possible. There are many ways to organize a large volume of grid widget data in an intuitive fashion, such as by activating grouping, incorporating drill-down behaviors,...
Learn More

Boost chart widget elements with custom tooltips

It is often said that a picture is worth a thousand words, and in business the most fundamental expression of that saying comes in the form of charts and graphs. To that end, Nitro App Builder offers a wealth of configurable chart widgets that can be used to effectively summarize data and trends from any IBM i system. Keep in mind that the principle of “less is more” often applies when showing data in a chart or graph. Placing too...
Learn More

Setting behind-the-scenes fields on edit grids

One of the more popular features of Nitro App Builder is the ability for IBM i developers to quickly roll out a file maintenance app in the form of an edit grid. A developer simply creates a data source over the desired file(s), maps it to an edit grid widget, and voilà!  In virtually no time they’ve created a fully functional maintenance app. While this quick and easy process works wonderfully for files in which all the fields that need to...
Learn More

A note on the global “log4j” security vulnerability

This week brought news of an exploitable hack to which certain applications executing Java may be vulnerable. Specifically, any applications using the popular Apache log4j logging tool may, under certain circumstances, be exposed to hackers executing nefarious code on their servers. This includes applications running on IBM i. While Valence does include a version of log4j for logging JDBC connection info when accessing remote databases through Nitro App Builder or the vvOut_execSQLtoJSON RPG Toolkit procedure, the log4j version Valence uses, 1.2.17, predates the exploitable functionality introduced...
Learn More

Cleaning up temporary work file data in Valence

In most cases, apps running inside the Valence Portal pull whatever data they need directly from the company’s IBM i or remote database, providing pertinent information to users with no intermediate steps required. Hence there’s nothing to “clean up” after the apps complete. But for more complex scenarios, you may find back-end work files are needed to support the process. In such cases the back-end programs involved accumulate data in the system that must eventually be cleaned up, lest you...
Learn More

Create a Quick and Dirty File Maintenance App

We pride ourselves on how quickly you can create an elegant application for editing a physical file, or even multiple joined physical files, in well under an hour in Valence using the Nitro App Builder tool. But what if you’ve got to leave to catch a train in two minutes, and one of your users comes to you with an emergency need to edit the contents in a single physical file? Sure, you could give the user full access to...
Learn More

Using App Variables to dynamically change grid column headings

In most cases, grid applications developed with Nitro App Builder have static columns that never need to change. That is, a “Customer Number” column will always hold the customer number or customer ID; a “Product Number” column will always hold the item number or SKU, etc. But in some cases you may have grid columns that, ideally, would have different column headings depending on the type of data being rendered. For example, suppose your company has a file that holds...
Learn More
1 2 3 8