Showing posts with label plug-ins. Show all posts
Showing posts with label plug-ins. Show all posts

Wednesday, September 02, 2020

Need to extend Oracle APEX? Welcome Plug-ins Pro!

After APEX Office Print (AOP), APEX Media Extension (AME), and APEX Project Eye (APE), we launched our newest product and service, Plug-ins Pro, in June.



Since 2004 I've used Oracle Application Express (APEX) and I just love it. With every new release of APEX things become easier and new features get added going from new item types like switches to rich components like charts. But the web is moving fast, and customers want more and more which means you need to go outside of what APEX provides. The main building blocks of APEX are the Oracle database, SQL, PL/SQL, HTML, CSS, and JavaScript. You can use any of those technologies to extend Oracle APEX with custom components. This is a real benefit of APEX, you can go from Low Code to High Code in no time. Really, there's no limit... only your imagination and skills.

Over time I've created many extensions for APEX, going from building reusable PL/SQL packages to integrating some JavaScript library. The issue with building those one-off customizations is that you have to maintain them. Where plain Oracle APEX applications stand the test of time very well, for example, an app built in 2006 still runs today, even after upgrading to the latest Oracle APEX version. Whenever I used custom code, especially JavaScript, it was less obvious to keep that current, and it would be one of the first things that break. Next to that, you make the code work specifically for a project, and in the next project you need something similar, so you copy the solution and make changes specific for that project. It's always in the context of a project that things are built, never looking at the bigger picture.

As the Oracle APEX team identified the need to extend APEX and wanted to provide a way that makes it more reusable and easier to maintain between APEX applications, they introduced plug-ins in APEX 4.0, this is now 10 years ago!

The result was that the awesome APEX community started to create and share plug-ins. Most people offer those plug-ins as open-source. Initially, there was an APEX plug-ins website maintained by Itium that had a catalog of all APEX plug-ins, but today you find the plug-ins catalog on apex.world.


There are many great plug-ins from people like Bartosz Ostrowski, Daniel Hochleitner, and Ronny Weiß to name a few, but there are also many plug-ins now that are built for a specific purpose but not maintained any longer. If you included one of those plug-ins in your app, you are on your own. But even if it's still maintained, you can't expect the author to add new features to the plug-in when you need them or when you upgrade the APEX version and it breaks. 

Creating plug-ins and maintaining plug-ins takes a lot of time, especially when you want to think about the bigger picture and make them so good that they can be used in many different projects, they are fully documented and you have some sample code, so it's easy to include in any project, even when it's been a while since you last looked at it.

And this is how Plug-ins Pro was born... we want to take away the pain of having to build and maintain APEX plug-ins. These are not just plug-ins, those are rock-solid, state-of-the-art, professionally built plug-ins that behave just like native Oracle APEX components. They are accessible, translatable, universal theme ready, and most importantly fully documented, with many samples on how to use them AND supported! If you have an issue or you want an extension, you know who to go to.

With AOP we made printing and exporting of data easy in the Oracle database and APEX. With Plug-ins Pro we want to make extending the Oracle database and APEX easy!



Once I knew we wanted to bring high-quality, supported plug-ins to the APEX community, I knew we would need the best people to bring them to life.  Bartosz Ostrowski joined the team in January of this year and began creating our awesome plug-ins.  When we launched Plug-ins Pro we started with 3 highly demanded extensions for Oracle APEX:
And we didn't go light on those plug-ins... the client-side validation plugin for example took over 400h to build!

We started from a requirements document:


We built the plug-in, tested it in on the different APEX versions (starting with 18.1), and finished off by creating extensive documentation and a full-fledged sample application



The goal of Plug-ins Pro is to make you successful, so you can turn your ideas into reality with Oracle APEX and the Database.

Our goal is not to have all the possible plug-ins, instead, we want to create plug-ins that make a difference, and that would take a lot of time to build yourself. We have some plug-ins in the pipeline, some I'm super excited about and can't wait to share with you :) but just like with APEX Office Print (AOP), we especially want to listen to you, what are you searching for, and what would make a difference for you.

This is why on our website, you can submit ideas for new plug-ins and vote on already submitted ideas!


I will write some more blog posts on the plug-ins we offer, but if you already want to try them, head over to the Plug-ins Pro website and try them 1 month for free!


Last but not least... through September 30th, 2020, we are running an Early Adopter Special Offer. Show your support for Plug-ins Pro and help us get off the ground running!  Get all the details at plug-ins-pro.com.



Tuesday, September 07, 2010

Upgrading to APEX 4.0: jQuery

In a lot of my APEX 3.x projects I used jQuery to extend the standard functionalities of APEX with some more interactive (client-side) components.

In jQuery there are very nice plug-ins, like a modal window, a grid, tooltips etc.

If you try to run your APEX 3.x application in APEX 4.0 you might find these jQuery components/plug-ins are not working anymore. The cause can be multiple:

  • You might have used an older version of jQuery and the plug-ins you used with that, which are not compatible with the jQuery version in APEX (1.4)
  • You load jQuery, but APEX loads their build-in jQuery too and things get mixed up
During the migration of my APEX 3.x application to APEX 4.0 I just take off all references to jQuery I made myself. Just make sure that in your template the #HEAD# is before any other jQuery plug-ins you try to run. Also make sure the jQuery plug-ins you use are compatible with jQuery 1.4.2. APEX ships with a lot of extra jQuery plug-ins like jQuery UI, js-tree etc so if you used that it's not necessary anymore to include them. (to see a complete list of files that ship with APEX, look into /images/libraries/)

Before I loaded my files as part of my Page Template, but I'm not sure I would still do that.
If you switch from template you lose the references. It might be better for maintainability point of view to include it in a region on Page 0. It will have a small performance hit, as APEX will have to look for it on Page 0, but it makes maintainability easier.
But going forward I'm converting all my custom javascript and jQuery plug-ins to APEX plug-ins and the files get loaded as part of the plug-ins. A lot of the javascript can disappear as it can be replaced by the build-in Dynamic Actions of APEX 4.0.

Hope it can help some of you when you see javascript errors when you try to run your APEX 3.x app in APEX 4.0. But don't panic to fast, it's probably just the way jQuery gets loaded.

Wednesday, January 06, 2010

APEX 4.0: My first Plugin - Editable Select List / Combobox

Before I just played around with APEX 4.0 and tested the new features and created some quick apps, but a week ago I made the decision to really see what APEX 4.0 can give me in a real project.

So the plan I had was to start this project in APEX 4.0. It's a risk as I might never be able to import it again in the next version of the Early Adopters release, but I made this conscious decision because I really wanted to see how much time APEX 4.0 could save me.

I'll do a proper blog post about the outcome once I finish the project, but I already wanted to discuss the Plug-ins part of APEX 4.0.

In my project a person need to be able to see and select a category. If the category doesn't exist he needs to be able to create it. So if I was in APEX 3.x I would look at using a select list or a popup lov. Possibly I would add a plus button next to it and write some javascript code to show a text item to enter a new category if it wasn't already in the system. Alternatively I would use some JQuery plugins like the autosuggest or an editable select list / combobox.

But in APEX 4.0 there is a build-in item type "textfield with autocomplete" which I could have used, but one of the drawbacks of that is that you can't really look what is in the system already without typing some letters. So I searched for an editable select list, but that item type didn't exist.

It would take me about 5 minutes to write some custom JQuery code and hook up the plugin to get an editable select list, but I would need to do that for every project again on every page I want to use it. So I thought it's a good moment to create such item type myself, which I would be able to reuse in every project.

It took me about 3 hours to understand how the plugins worked, read Patrick's documents and look at his examples and use that knowledge to create my first plugin. So I need to use this plugin 36 times to be break-even compared to if I did it the custom route.

But the big advantages of using the plug-in are:
- the implementation will be every time the same
- more people can use
- you don't need to know javascript to get things working

You can see the Editable Select List Plugin working and be able to download it here.

To install the Plugin in your own application, go to Shared Components > Plug-ins and hit the Install button.

Tell it in which app it needs to be installed into (Plug-ins are app specific).


And review the code, my plugin is called AE Sexy Combo, because it's based on the Sexy Combo JQuery plugin.


So now you should be able to create this item type on your pages.

You add a new item of type Plug-ins and select the AE Sexy Combo

You give it a name and you need to add a select statement to it (in the LOV section of the item) and it's ready!

Conclusion; it didn't take me too long to understand how the plugins worked especially not if you investigate the existing examples which you can use as a starting point.
I found it not easy to find my coding mistakes e.g. I'm not sure the plsql code gets parsed, but it took me some time to find I missed a ")" somewhere. But I used the apex_plugin.debug_page_item and found that helpful.
It would be nice to be able to upload multiple files at once and be able to reference the css like you do with javascript e.g. apex_javascript, get an apex_css.

I like Plug-ins very much, I think if people start to share that we can extend APEX ourselves all the time without having to wait for another APEX release. It's a very controlled environment, so much more secure to use especially for non-advanced developers.