Execute PLSQL Code

This new dynamic action plug-in introduces some enhancements that are missing from the existing “Execute PL/SQL Code” dynamic action that APEX provides. These additional features include:

Providing a processing icon whilst optionally masking the background either at the region or page level

  • Declarative Success & Error Notifications
  • Submitting and returning CLOB data using page items or Javascript variables
  • Returning the execution results to a Javascript variable
  • Optionally suppressing the change event on page item values that are returned
  • [Advanced Usage] return instructions to the browser for things like hiding/showing items & regions, refreshing them, returning item errors, and more. Using these advanced instructions can save you the overhead of creating many actions.

Sparkline Charts in Grid Columns

We have introduced an improvement to grid/tree grid plugins to allow developers to easily include a sparkline chart in grid columns. You simply need to provide a colon delimited list of values for the chart data source (i.e. the column in your SQL query) and provide some additional config in the “FOEX Config” dialog for the grid column e.g.

"xtype": "widgetcolumn",
"widget": {
   "xtype": "sparklineline",
   "bind": "{record.MY_COLUMN_ALIAS}"
} 
 

Conditional Checkbox Selection

By adding a specific column you your grid query named “FXSELECT” with a Y/N value you can control whether or not the checkbox is shown for the allowed selection rows. In your grid settings you have the option of providing a page item that will automatically track your row selections in a colon delimited list of grid primary key values.

 

Auto Expand to Node

We have updated the Tree Grid, in addition to saving the current row selection(s), you can now save their path(s) and expand the tree to these nodes on tree reload.

This is the ideal solution when you have searched and found a record that matches your search, and you want to clear the search and expand to this node in the tree on reload. This is especially useful for large datasets where you want to locate a particular record and look at their children, since they are excluded from search results.

How do I enable this functionality? Simply add an extra page item to the track selections attribute and we’ll do the rest

 

Live Editing with Websockets

This is the premier feature of the release. The ability to perform live collaboration and see data changes in real time. Enabling this new feature is just a single click away.

In this release we are introducing a new addon to introduce live editing capability of the grid, tree grid, and editable list views. You will be able to see realtime changes and a realtime visualization of other users modifying data in the same view of data you are viewing. Just like you can with Google spreadsheets..

For some businesses the difference between knowing something now vs in 1 minute from now can have a huge impact. It can save lives, it can give you a competitive advantage, it can make you more money. This is what you get with FOEX Live, seeing your data changes in realtime and being able to immediately respond and make decisions based on these changes.

FOEX Live Editing - Grid Demo

Click to see the demo video

FOEX Live Editing - Tree Grid

Click to see the demo video

FOEX Live Editing - Drag & Drop List View(s)

Click to see the demo video

(Click to see the demo video)

Inactivity Timeout

We have introduced an improvement to both the Timer and Message Box plugins to allow developers to easily include an inactivity timeout warning. The Timer plugin has a new inactivity timer option which will be triggered when the user has not moved their mouse or pressed a key for X many seconds.

The "Message Box" improvement provides a progress indicator with a timeout message. The OK button is included to allow the user to prevent the default action from occurring e.g. page reload, session timeout etc. Since the "Message Box" allows you to define PLSQL you can use this setting in conjunction with the application Idle timeout to prevent the APEX session from timing out as well. Or you could use the "No/Cancel/Timeout" PLSQL to log the user out e.g.

apex_authentication.logout(:SESSION, :APP_ID);

Debounce & Throttle Dynamic Actions

In this release we are adding some additional dynamic actions to provide some missing functionality in APEX, which is the ability to deal with actions that fire to frequently e.g. you probably don't want your actions to fire a keyup event action (when the user is typing) until they have stopped typing for say 1 second. These new actions we are adding are Debounce & Throttle.

What's the difference between Debounce and Throttle?

Debouncing enforces that a function not be called again until a certain amount of time has passed without it being called. As in "execute this action only if 500 milliseconds have passed without it being called."

Throttling enforces a maximum number of times a function can be called over time. As in "execute this action at most once every 500 milliseconds."

The inseresting thing about these actions is that they only apply to proceeding actions, so you can define actions before them that will fire every time the event fires, thus giving you much more flexibility. Note: the only requirement when using these actions is, you must set "Wait For Result" to "Yes"

Other Enhancements

Thanks to the continued use of FOEX from a growing customer base we receive requests for enhancements and improvments. Whilst we can't implement every request we receive (for different reasons) the following improvements have been introduced in this release:

  • New expand/collapse rows functionality for tree/tree grids
  • Deselect Capability in Single Grid Row Selection
  • Allow typing in the grid combo input
  • A new declarative option to "Save all Records" in the grid
  • New actions to suspend/resume auto save on grids, trees, and lists
  • Include changes made to grid rows in the POST Processing Procedure hook
  • Define namespaces for caching e.g. for multiple views of the same page
  • Auto Size content height in the grid row expander
  • Add list support to grid column search menu via the additional config setting:
    "filter":{"type":"list","single":false}
  • Triggering Event option to locate rows by e.g. Refresh Rows Action
  • Tooltips added to Form navigation buttons without labels
  • Plus a number of other minor improvements and bug fixes

Easily Add Values to LOV's

Sometimes you have LOV’s in your application where users need to add a new value to the list. As a developer it’s normally an annoyance/cumbersome process to provide a button next to the list that opens a popup with a form to add the extra value, especially if you have 5 or more LOV’s to provide this functionality for.

From this version onwards we now take this headache away for you, all you need to do is add a few settings to your LOV and we will take care of the rest.

(Click to see the demo video)

New APEX Integration Showcase

See how you can use the grid or tree grid as a standalone region on a regular APEX page. The regions will work with responsive design and auto resize on window resize and navigation collapse.

Alternatively you can use everything FOEX has to offer on a regular APEX page by starting with a layout region as the parent region and then nest whichever FOEX plugin you like below. For existing developers already using FOEX all you need to do is switch your viewport to the “FOEX Layout” plugin. This means that you can take advantage of everything FOEX has to offer like single page application design without having to re-develop your application.

Grid/Tree Page Item Binding

FOEX 4.0 comes with the ability to use external page items to edit grid data on row selection.

The data binding goes both ways:

  • Grid row changes are propagated to page items
  • Page item changes are propagated to the selected grid row

(Click the image to see demo video)

Grid Enhancements

In FOEX 3.1 our grid component becomes even more powerful with additional client-side validations that are performed in cell edit mode, before the grid is saved, reducing the amount of AJAX calls back to the server.

The Select Row(s) and Refresh Rows dynamic actions have also been enhanced and now support multiple selections. Both now support regular expressions for performing column search and client-side substitutions.

Icon Button Item Plugin

Building on top of Font Awesome/Font APEX, you can now define icons, resize and place them either in a toolbar or a form.

This component supports:

  • set custom icon size
  • active/disabled color change
  • help text
  • use icons in read-only mode

Return/Display Item Plugin

A component familiar to Forms developers that behaves similar to the Grid Combo and which enables you to perform a record lookup based on its ID.

(Click to zoom in)

Compatible with APEX 5.1

Touch Screen Device Support

With FOEX 3.0 you are able to build and run your applications on tablets (or smartphones) with no additional modification.

Improved UX

A great user interface goes beyond some good looking graphics. FOEX 3.0 enables you to design visually compelling web applications for desktop, tablets and smartphones using the high-performance UI components of Sencha ExtJS 6.2.

Grid Enhancements? You Bet!

The FOEX grid is arguably one the most popular components and in this new version we’ve made it even more powerful.

FOEX 3.0 introduces new functionality such as: multiple search, expander rows and column multisort.

New Themes

FOEX 3.0 comes with new themes (Triton, Triton dark & Aria) that are meant to improve accessibility and facilitate an easier navigation in your applications.

New Layout Options

FOEX 3.0 adds even more layout styles that can be used in regions, panes, forms, and windows. These include: Absolute, Auto, Center, HBox -> VBox and Anchor.

New Features

The new navigation region plugin offers a fast and easy solution for users to navigate to other pages in your application.

Keyboard Navigation

For our power-users navigating using the keyboard is often faster than with a mouse. FOEX 3.0 comes with improved navigation functionality specifically designed to enable you to speed up development.