Pretius APEX Enhanced LOV item is powerful combobox to select singular / multiple values in two modes: autocomplete and popup report. The plugin provides high customization possibilities through its attributes.
- License
- Demo Application
- Features at Glance
- Roadmap
- Install
- Usage Guide
- Plugin Settings
- Changelog
- Known issues
- About Author
- About Pretius
- Free support
- Become a contributor
- Comercial support
MIT
https://apex.oracle.com/pls/apex/f?p=111865:1
- compatible with Oracle APEX 5.1, 18.x, 19.x
- The plugin has two modes: Autocomplete and popup report
- Autocomplete custom filtering rules can be defined as SQL where clause
- Autocomplete can render data in custom HTML template returned from JavaScript annonymouse function
- Popup report columns can be configurable: sorting, filtering, aligment and heading text
- The plugin texts are translatable
- Interactive GRID support (since v1.1.0)
- Floating label template (since v1.1.0)
- Support for pasting values (for example from Excell file) (since v1.1.0)
- RTL support
- Mobile devices support
- Show only selected in autocomplete mode
- Different types of pagination in popup report
- Creating new values in autocomplete mode
- Oracle APEX Theme roller integration
- Keyboard shortcuts
- Highlighting search term in autocomplete
- Columns order configurable in JSON
- Grouping in autocomplete and popup report
APEX_ENHANCED_LOV_ITEM.sql
- the plugin package specificationAPEX_ENHANCED_LOV_ITEM.plb
- the plugin package bodyitem_type_plugin_pl_ostrowskibartosz_apex_enhancedlovitem.sql
- the plugin installation file for Oracle APEX 5.1 or higherexample_app.sql
- the plugin example app exported from apex.oracle.com (Oracle APEX 19.1). Application usesemp
table which is available at apex.oracle.com.
To successfully install the plugin follow those steps:
- Install package
APEX_ENHANCED_LOV_ITEM
in the parsing schema of your application - Install the plugin file
item_type_plugin_pl_ostrowskibartosz_apex_enhancedlovitem.sql
- Create APEX item
PX_NAME
with type set toAPEX Enhanced LOV Item [Plug-in]
- Provide SQL query and mark
display
column with aliasd
andreturn
column with aliasr
* - Explore the plugin capabilities by reading Help Texts within APEX Application Builder
- Configure the plugin according to your requirements
*
the plugin uses aliases d
and r
to recognize which column should be returned and which is general display column. Don't use aliases enclosed with quote character! See example below:
select
e.empno r,
e.ename d,
e.*
from
emp e
Detailed information about how to use every attribute of the plugin is presented in built-in help texts in APEX Application Builder.
-
General Settings
- Autocomplete - autocomplete mode is available to end-user
- Popup report - popup report mode is available to end-user
- Multiple Selection - when checked the plugin allows to select multiple values in selected modes
-
Autocomplete Settings
- Use Custom Search Logic
- (when not checked) Default Autocomplete Search - Select list with 12 options
- (when checked) Custom Search Logic - SQL where clause to be defined by developer
- Use Custom Template
- (when checked) Custom Autocomplete Template - annonymouse JavaScript returning HTML template for each row
- Limit Displayed Tags
- (when checked) Number Of Tags - number of tags (values) to be presented before wrapping others tags in summary tag
- Minimal Input Length
- (when checked) Minimal Input Length - minimal number of characters to be provided by end-user before performing autocomplete search
- Rapid Selection - when checked then user is able to select value from list and write next phrase to search for. When unchecked in singular selection mode it automatically close autocomplete.
- Use Custom Search Logic
-
Popup Settings
- Report Columns Configuration
- (when checked) Report Columns Configuration - JSON object describing visibility, heading text, sorting, fitlering for each column of popup report
- Clicking On Row Selects It - when checked, end user is able to select values by clicking on row in popup report
- Custom Title
- (When checked) Custom Title - text to be used as title for popup report dialog
- Resizable - when checked, the popup report dialog is resizable by end-user
- Draggable - when checked, the popup report dialog is draggable by end-user
- Close On Escape - when checked, the popup report can be closed by pressing
Escape
key - Rows Per Page - when checked, end user can force report to show particular number of rows
- Search In All Columns - when checked, end-user is able to filter popup report through all columns
- Adjust Height To Report Rows
- (when not checked) Dialog Height - popup report dialog has static height given by developer
- (when checked) popup report adjusts dialog height to result rows
- Report Columns Configuration
-
Report Basic Configuration
- Display "Display" Column - when checked, column with alias
d
is rendered in popup report - Display "Return" Column - when checked, column with alias
r
is rendered in popup report
- Display "Display" Column - when checked, column with alias
-
Dialog Width - popup report dialog has static with given by developer
- Autocomplete closed - Triggered each time autocomplete is closed.
- Autocomplete data appended - Triggered each time new data is being loaded after scrolling autocomplete results/
- Autocomplete data rendered - Triggered each time first set of data is being rendered
- Autocomplete error - Triggered each time autocomplete has error
- Autocomplete open - Triggered each time autocomplete is beind opened
Each autocomplete event has access through this.data to following information:
{
"prompt": {
"container": jQuery object, //autocomplete container
"header" : jQuery object, //autocomplete header with action menu
"body" : jQuery object, //autocomplete body containing rendered data
"input" : jQuery object //autocomplete search input
},
"mask": {
"selected" : Array, //array of already selected data
"dataAvailable": Boolean //boolean value indicates whether there is data to render
}
};
- Popup report closed - Triggered each time popup report is closed
- Popup report data rendered - Triggered each time the popup report renders set of data
- Popup report error - Triggered each time the popup report has error
- Popup report open - Triggered each time the popup report is opened
Each popup report event has access through this.data to following information:
{
"header" : jQuery Object, //reference to container for global search, rows per page and pagination
"container" : jQuery Object, //reference to parent container of popup report
"body" : jQuery Object, //reference to body container of popup report
"footer" : jQuery Object, //reference to container for Show only selecte and button Select
"pagination" : jQuery Object, //reference to container for pagination
"search" : jQuery Object, //reference to input performing search in all columns
"rowsPerPage" : jQuery Object, //reference to select list
"contentTable" : jQuery Object, //reference to result table of data currently rendered
"state" : {
"selected" : Array, //Array of currently selected values in popup
"searchString" : String, //Currently provided search string
"searchColumnIdx" : Number, //Index (starting from 1) of column in SQL Query
"sortedColumnIdx" : Number, //Index (starting from 1) of column in SQL Query
"sortedColumnDirection" : String, //String "asc" / "desc"
"ajaxRunning" : Boolean //If true then AJAX is currently running
}
};
To add new translations use Shared Componentes> Globalization > Text Messages
.
Translation code | Translation text | Introduced |
---|---|---|
PAELI_POPUP_SEARCH_PLACEHOLDER | Enter a search term | |
PAELI_POPUP_BTN_SELECT_TEXT | Select | |
PAELI_POPUP_SHOW_SELECTED_LABEL | Show only selected | |
PAELI_POPUP_TEXT_ROWS_SELECTED | All results (%0) on this page has been selected. | |
PAELI_POPUP_TEXT_NO_DATA_FOUND_SEARCH | No data found for search term "%0". | |
PAELI_POPUP_TEXT_NO_DATA_FOUND_QUERY | Dictionary has no data to render. | |
PAELI_POPUP_TEXT_CLEAR_FILTERING | Click here to clear filtering. | |
PAELI_POPUP_TEXT_UNSAVED_CHANGES | You have selected %0 values. Closing without saving will not save selected values. | |
PAELI_POPUP_TEXT_SEACH_IN_SELECTED | You have filtered %0 row(s) from %1 selected row(s). Click here to get back to all selected rows. |
|
PAELI_POPUP_TEXT_FILTERED_INFO | %0 results found for search term "%1". | |
PAELI_POPUP_TEXT_EXTRA_VALUE | Value "%0" is not within dictionary. | |
PAELI_PROMPT_MENU_EXPAND_TITLE | Show or hide all tags | |
PAELI_PROMPT_MENU_SORT_TITLE | Sort tags | |
PAELI_PROMPT_MENU_CLEAR_TITLE | Clear all selected values | |
PAELI_PROMPT_MENU_PASTE_TITLE | Paste values | v1.1.0 |
PAELI_PROMPT_MENU_POPUP_TITLE | Open popup report | v1.1.0 |
PAELI_PROMPT_TEXT_MINIMAL_INPUT_LENGTH_X | Please enter %0 or more characters. | |
PAELI_PROMPT_TEXT_MINIMAL_INPUT_LENGTH_0 | Start typing to get results. | |
PAELI_PROMPT_TEXT_NO_DATA_FOUND | No data found. | |
PAELI_PROMPT_TEXT_SEARCHING | Searching... | |
PAELI_PROMPT_TEXT_RAPID_SELECTION | Start typing to select more... | |
PAELI_PROMPT_TEXT_LOAD_MORE | Load more... | |
PAELI_TAGS_LIMITED_OTHERS | and %0 more... | |
PAELI_TAGS_LIMITED_0 | %0 selected | |
PAELI_POPUP_PAGINATION_PREV | Previous | |
PAELI_POPUP_PAGINATION_NEXT | Next | |
PAELI_POPUP_PAGINATION_OF | of | v1.1.0 |
PAELI_POPUP_HEADER_SORT_ASC_TITLE | Sort ascending | |
PAELI_POPUP_HEADER_SORT_DESC_TITLE | Sort descending | |
PAELI_POPUP_TEXT_SEARCHING | Waiting for results... | |
PAELI_ERROR_DEBUG_OFF | Please contact application administrator for more information.\nDetailed information available in debug mode. | v1.1.0 |
PAELI_POPUP_PASTE_TEXTAREA_PLACEHOLDER | Values must be separated by a newline character | v1.1.0 |
PAELI_POPUP_PASTE_BTN_PARSE_TEXT | Parse | v1.1.0 |
PAELI_POPUP_PASTE_BTN_CLEAR_TEXT | Clear | v1.1.0 |
PAELI_POPUP_PASTE_BTN_SELECT_TEXT | Apply | v1.1.0 |
PAELI_POPUP_PASTE_BTN_BACK_TEXT | Back | v1.1.0 |
PAELI_POPUP_PASTE_SUMMARY_PASTED_COUNT | Total number of pasted values | v1.1.0 |
PAELI_POPUP_PASTE_SUMMARY_PASTED_LENGHT | Total length of pasted values including separator | v1.1.0 |
PAELI_POPUP_PASTE_SUMMARY_MAX_LENGTH | Maximum length | v1.1.0 |
PAELI_POPUP_PASTE_SUMMARY_VALUES_TO_BE_APPLIED | Number of pasted values to be applied %0 | v1.1.0 |
PAELI_POPUP_PASTE_SUMMARY_VALUES_EXCEEDING_LIMIT | Number of pasted values exceeding the maximum length %0 | v1.1.0 |
PAELI_POPUP_PASTE_SUMMARY_SHOW_LIST_ANCHOR | (show list) | v1.1.0 |
PAELI_POPUP_PASTE_SUMMARY_MAXLENGTH_NOTSET | not set | v1.1.0 |
PAELI_POPUP_PASTE_SUMMARY_TH_VALUES_OUT | Values exceeding maximum length limit | v1.1.0 |
PAELI_POPUP_PASTE_SUMMARY_TH_VALUES_IN | Values ready to be applied | v1.1.0 |
PAELI_POPUP_PASTE_SUMMARY_TH_SUMMARY | Summary | v1.1.0 |
- fix for #36 - added debounce to listener on parent cascading lov items
- fix for #40 - the plugin in interactive grid with readonly mode
- fix for #42 - change event in autocomplete is not doubled
- component name changed from
APEX Enhanced LOV Item
toPretius APEX Enhanced LOV Item
- Possibility to paste list of values (ie. from excel column)
- new translation texts were added (see translation texts table)
- Possibility to open popup report from autocomplete menu
- Processing AJAX call in popup report doesn't flicker content of report
- Floating template is supported
- Interactive Grid is supported
- Code have been refactored
- Debug messages are divided to each level
- Code have been refactored
- Debug via APEX Debugger is now available
- #7 inline dialog bug is fixed . Item prompt is no longer hidden behind inline dialog,
- #12 Loading display value for item session state on
Page load
has been fixed., - #14,#15, #20 Cascading LOV funcionality has been fixed and now supports multiple parent items,
- #17 focus issues are fixed
- missing translation text
PAELI_POPUP_PAGINATION_OF
for pagination is now supported order by
clause in provided SQL Query is no longer removed. It fixes bugORA-00907: missing right parenthesis
when aliasesd
,e
,c
,o
has been used inorder by
clause,Warn On Unsaved Changes
is supported,- item value is printed using
htp.prn
instead ofhtp.p
. No new line\n
character added to item value attribute at the end of string,
PL/SQL
all strings inputed via search field is being escaped usingAPEX_ESCAPE.HTML
- fix for potential XSSPL/SQL
value from session on page load is being escaped usingAPEX_ESCAPE.HTML
- fix for potential XSSPL/SQL
Rows in whichr
columns is null is not available inautocomplete
andpopup
mode - value in columnr
must be unique and can't be nullJS
Typo inPAELI_POPUP_TEXT_ROWS_SELECTED
has been fixedExample application
supporting objects has been updated (install script fixed, deinstall script created)
Plugin
Rapid Selection
attribute is now dependent on the plugin selection mode (multiple / singular). In singular selection uncheckedRapid Selection
attribute results in closing autocomplete after selecting value,Plugin
Custom Autocomplete Template
attribute help text has been updated with reference tothis.data.selected
which indicates that particular row is already selected by end-user,Plugin
new component attributeAutocomplete Rows To Fetch
is available to define,Plugin
new component attributeAutocomplete Results Max Height
is available to define,Plugin
in case of new component attributes new translatable textPAELI_PROMPT_TEXT_LOAD_MORE
is now available.PL/SQL
autocomplete pagination (lazy loading) has been fixed to return given number of rows (previously it was duplicating last row from requested set of data)JavaScript
the plugin mask (apex item visualization) is focusable and supportkeypress
andkeydown
events when focused.- pressing
Down Arrow Key
results in opening autocomplete - pressing any letter key results in opening autocomplete and peforming search
- pressing
minor fixes for first release
Initial Release
- Inline dialog bug fixed v1.1.0
Author | Website | Github | ||
---|---|---|---|---|
Bartosz Ostrowski | http://ostrowskibartosz.pl | @bostrowski | @bostrowsk1 | bostrowski@pretius.com, ostrowski.bartosz@gmail.com |
Pretius Sp. z o.o. Sp. K.
Address | Website | |
---|---|---|
Przy Parku 2/2 Warsaw 02-384, Poland | http://www.pretius.com | office@pretius.com |
Pretius provides free support for the plugins at the GitHub platform. We monitor raised issues, prepare fixes, and answer your questions. However, please note that we deliver the plug-ins free of charge, and therefore we will not always be able to help you immediately.
Interested in better support?
- Become a contributor! We always prioritize the issues raised by our contributors and fix them for free.
- Consider comercial support. Options and benefits are described in the chapter below.
Have you found a bug or have an idea of additional features that the plugin could cover? Firstly, please check the Roadmap and Known issues sections. If your case is not on the lists, please open an issue on a GitHub page following these rules:
- issue should contain login credentials to the application at apex.oracle.com where the problem is reproduced;
- issue should include steps to reproduce the case in the demo application;
- issue should contain description about its nature.
If you encounter a problem during the plug-in implementation, please check out our demo application. We do our best to describe each possible use case precisely. If you can not find a solution or your problem is different, contact us: apex-plugins@pretius.com.
We consider our plugins as genuine open source products, and we encourage you to become a contributor. Help us improve plugins by fixing bugs and developing extra features. Comment one of the opened issues or register a new one, to let others know what you are working on. When you finish, create a new pull request. We will review your code and add the changes to the repository.
By contributing to this repository, you help to build a strong APEX community. We will prioritize any issues raised by you in this and any other plugins.
We are happy to share our experience for free, but we also realize that sometimes response time, quick implementation, SLA, and instant release for the latest version are crucial. That’s why if you need extended support for our plug-ins, please contact us at apex-plugins@pretius.com. We offer:
- enterprise-level assistance;
- support in plug-ins implementation and utilization;
- dedicated contact channel to our developers;
- SLA at the level your organization require;
- priority update to next APEX releases and features listed in the roadmap.