Wednesday, September 5, 2018

APEX 18.1 UT Touch Gestures Fix


If you tried using the build-in Touch Gestures (hamer.js) of APEX 18.1 Universal Theme on your Android device (or Chrome Device Simulation Tool on your desktop), you might have noticed the Swipe and Pan doesn’t work. Here’s how to fix this: add an on-load Dynamic Action and execute this JS snippet:



delete Hammer.defaults.cssProps.userSelect;
Hammer(document.body, {});


(many thanks to Shakeeb)


P.S: You can try/test the Touch Gestures in the Universal Theme Reference Application

Friday, December 22, 2017

Describing ORDS RESTful Services using a WADL

Recently I got this question (or better specification) from a customer: 
"For exchanging data, we either want a SOAP webservice or a REST service offering a WADL". 

WADL? 


What's a WADL? I know WSDLs as descriptive endpoints for SOAP webservices, but WADL?! It occurs, that WADL's are intended to do just that, but in a more generic way. WADL stand for Web Application Description LanguageThe World Wide Web Consortium (W3C) currently has no plans to implement WADL as a standard. Oracle's ORDS is going the swagger/openapi route which is partially implemented in the 17.3 release. 
With no existing functionality to provide a WADL for Oracle RESTful services, I had to come up with my own solution, using the APEX repository views to generate a WADL endpoint. I came up with a small procedure for this and add an additional URI Template to my service, called "wadl" with a single GET Resource Handler calling this procedure. 



WADL endpoint in APEX RESTful definition

Because the RESTful service I had to provide was fairly simple, my solution is far from complete. In addition, the WADL definition structure examples I found were not really clear on which elements to include or not. So, I decided to provide my solution as a GitHub project, open for anybody who wants to contribute. In addition, I have used my procedure to provide a WADL on the "oracle.example.hr" example RESTful service in my Oracle Application Express workspace on apex.oracle.com. After some modifications (on the example), I was able to load the definition into SoapUI.


Import a WADL in SoapUI

Give it a go. You can reach it here: https://apex.oracle.com/pls/apex/fifapex/hr/wadl/ 

RESTful Module oracle.example.hr in SoapUI from imported with generated WADL


Naughty APEX RESTful service definitions 


I tested the generated WADL with SoapUI, and the program does show all the handlers defined including all parametersUnfortunatelya WADL is somewhat stricter then an APEX RESTful service definition when it comes to case-sensitivity. Parameters have to case-match the resource path definition, which wasn't the case in the oracle.example.hr RESTful example. The 5.1 example has one definition per resource/URI template. In earlier version, I have seen multiple definitions with the same URI resource path (for example employees/{id}), and in the APEX RESTful repository, parameters are always stored as child records of a resource handler (PUT, GET, …), while parameters can either be on resource template level or on handler level. Makes sense, as the {param} part of the path belongs to the resource, but you might want to pass some HTTP header parameters with the PUT request for a resource only, while the GET just needs the resource parameter. Not all parameters from the resource paths were defined as parameters in the resource handlers, so I had to add those. I provided an export of the "corrected" example RESTful service on the GitHub project of my WADL generator procedure. 

Contribute 


Well, I have a reasonably well working WADL generator for Oracle ORDS/APEX RESTful services now. It sure needs improvement for other cases, I bet. So, if you need to provide a WADL for your RESTful service in APEX, get the code from my GitHub project. If you have enhancements, please contribute to the code. 

Friday, October 13, 2017

APEX SmartPivot Plug-in: Release 1.1



The APEX SmartPivot Plug-in is an Oracle Application Express Plug-in that enables users users to analyze data much like they are used to in Excel. It allows to present data in a customizable multilevel data grid. Developers can add the plug-in to any APEX application, just like adding an interactive report.

Website: www.apexsmartpivot.com


What’s new in Release 1.1


The new release of the APEX SmartPivot Plug-in focuses on integration with the latest APEX
version:


Users/UI Enhancements

Font APEX

The UI now supports Font APEX in APEX version 5.1 (Font Awesome in APEX 5.0). Your pivot report will look consistent with the rest of your application.
Font APEX can also be used in conditional formatting rules.


Conditional Formatting

Users can define, apply, save and share conditional formatting rules with a report layout. Conditional formatting is not restricted to setting text and background colors, but offers to translate (ranges of) values into text. For those users familiar with HTML: the text output can contain HTML, so even images or Font APEX can be used for presentation of the data.


Excel Export Enhancement

When exporting to Excel, the data and format will be kept exactly as in the APEX SmartPivot grid report.

Developers Enhancements

The APEX SmartPivot plug-in now supports report columns the same style as APEX Classic or Interactive Reports.

What about APEX 4.2 support?

Release 1.1 requires APEX version 5.0 or higher. For customers using Oracle Application Express 4.2 version 1.0.5 of the APEX SmartPivot plugin is still available and supported.

For more information, visit the website: www.apexsmartpivot.com
and online documentation: docs.apexsmartpivot.com