SlideShare uma empresa Scribd logo
1 de 47
PLUG-INS UNPLUGGED
Christian Rokitta
Berlin 2016
Content
what context structure details exercise
APEX Versions vs Plug-in Features
5
4
APEX Page States
APEX Page States
Generate HTML
Templates, Definitions
Resources
CSS, JS, Images
Dynamic Actions
Inline JS
AJAX Calls (DB)
Submitting Form
Validating
Processing
Reasons for Using APEX
declarative: hiding complexity
behind properties; especially
HTML, CSS and JavaScript
catalogue of build-in
components
Limitations
common components
evolving standards
evolving browser/device capabilities
users expectations
APEX is an Extensible Framework
Add additional
declarative
functionality
Plug-in Types
Item
Region
Dynamic Action
Process
Authentication
Authorization
Plug-in Types vs Page States
Item Type Plug-in
validations
Region Type Plug-in
static vs dynamic
Dynamic Action Type Plug-in
Process Type Plug-in
Authorization Type Plug-in
Authentication Type Plug-in
Authentication schemes are used to determine if
the user can access the application. As such it is
not run on a page or component level.
When to use Plug-ins
not possible with standard
declarative APEX
hiding complexity
reusability (application,
instance, public)
maintainability
Skills to build APEX Plug-ins
SQL
PL/SQL
Declarative vs Extended Skills
Ideal APEX Team
Inspiration
write your own
cut-n-paste code
libraries/jQuery Plug-ins
Lots of well-know public available APEX plug-ins
are based on existing JS/jQ solutions
https://select2.github.io/
Inspiration
jQuery Plug-in Wishlist
• JS/CSS files/library
• Doc, HTML Example, how-to, …
• Options (Configuration)
• Methods (API)
• Events
http://felicegattuso.com/projects/timedropper/
$('#id').timeDropper({mousewheel:true,meridians:true,init_animation:'dropdown',setCurrentTime:false});
Common Plug-in Structure
Plugin PL/SQL function signature
• render
• AJAX-callback
PL/SQL Types
• configuration
• state
• parameter passing
APEX PL/SQL API helper
• include JS and CSS files
• …
APEX JavaScript API
• initiate AJAX calls
• …
Render Function
function <name of function> (
p_<type> in apex_plugin.t_<type>
, p_plugin in apex_plugin.t_plugin
[, p_...]
) return
apex_plugin.t_<type>_render_result
apex_plugin.t_<type>
type t_<type> is record (
<param n>
…
, <param n>
, attribute_01 varchar2(32767)
…
, attribute_NN varchar2(32767)
);
std. declarative
attributes
additional plug-in
specific attributes
(page component)
APEX Version dependencies
apex_plugin.t_plugin
type t_plugin is record (
name varchar2(45),
file_prefix varchar2(4000),
attribute_01 varchar2(32767),
… ,
attribute_15 varchar2(32767) );
APEX 4 max 10 attr.
additional plug-in
specific attributes
application level
(Component Settings)
Item Type Render Function
function <name of function> (
p_item in apex_plugin.t_item_item
, p_plugin in apex_plugin.t_plugin
, p_value in varchar2
, p_is_readonly in boolean
, p_is_printer_friendly in boolean
) return
apex_plugin.t_page_item_render_result
t_page_item
type t_page_item is record ( id number
, name varchar2(255)
, label varchar2(4000)
, plain_label varchar2(4000)
, label_id varchar2(255)
, placeholder varchar2(255)
, format_mask varchar2(255)
, is_required boolean
, lov_definition varchar2(4000)
, lov_display_extra boolean
, lov_display_null boolean
, lov_null_text varchar2(255)
, lov_null_value varchar2(255)
, lov_cascade_parent_items varchar2(255)
, ajax_items_to_submit varchar2(255)
, ajax_optimize_refresh boolean
, element_width number
, element_max_length number
, element_height number
, element_css_classes varchar2(255)
, element_attributes varchar2(2000)
, element_option_attributes varchar2(4000)
, escape_output boolean
, attribute_01 varchar2(32767)
, …
, attribute_15 varchar2(32767));
Coding the Render Function
generate HTML for object
include assets (JS, CSS, …)
generate JS snippets
Coding the 3 Simple Steps
sys.htp.p('<input type="text" id="'||p_page_item.id||
' name="'||p_page_item.name||'" />');
apex_javascript.add_onload_code (
p_code => '$( "#'||p_page_item.id||'" ).timeDropper();'
,p_key => null );
apex_javascript.add_library (p_name => 'timedropper'
, p_directory => p_plugin.file_prefix
, p_check_to_add_minified => true );
apex_css.add_file (p_name => 'timefropper'
, p_directory => p_plugin.file_prefix );
Basic Demo Render Function
function render_timedropper(p_item in apex_plugin.t_page_item
, p_plugin in apex_plugin.t_plugin
, p_value in varchar2
, p_is_readonly in boolean
, p_is_printer_friendly in boolean)
return apex_plugin.t_page_item_render_result
is
v_result apex_plugin.t_page_item_render_result;
begin
apex_javascript.add_library(p_name => 'timedropper‘
, p_directory => p_plugin.file_prefix, p_check_to_add_minified => true);
apex_css.add_file(p_name => 'timefropper', p_directory => p_plugin.file_prefix);
sys.htp.p('<input type="text" id="' || p_page_item.id || '" name="' || p_page_item || '" />');
apex_javascript.add_onload_code(p_code => '$( "#' || p_page_item.id || '" ).timeDropper();', p_key => null);
return v_result;
end;
Beyond Basic Render Function
item (component) std. attributes
validation (for item type plugin)
AJAX Callback
Page Item Type Validation Callback
type t_page_item_validation_result is record(
message varchar2(32767)
, display_location varchar2(40)
, page_item_name varchar2(255)
);
Plug-in AJAX Callback
function <name of function> (
p_<type> in apex_plugin.t_<type>,
p_plugin in apex_plugin.t_plugin )
return apex_plugin.t_<type>_ajax_result
Callin the AJAX Callback
apex.server.plugin ( pAjaxIdentifier, { /*apex_plugin.get_ajax_identifier*/
x01-10: "...",
pageItems: "#P1_DEPTNO,#P1_EMPNO"
}, {
refreshObject: "#P1_MY_LIST",
loadingIndicator: "#P1_MY_LIST",
success: function( pData ) { ... do something ... },
any jQuery.ajax option,
});
sponsered demo
Q&A
Plugins unplugged

Mais conteúdo relacionado

Mais procurados

Troubleshooting APEX Performance Issues
Troubleshooting APEX Performance IssuesTroubleshooting APEX Performance Issues
Troubleshooting APEX Performance IssuesRoel Hartman
 
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQDynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQNetcetera
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMAdobeMarketingCloud
 
REST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterREST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterSachin G Kulkarni
 
Bridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMBridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMrbl002
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with LaravelMichael Peacock
 
RESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web APIRESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web API💻 Spencer Schneidenbach
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMconnectwebex
 
Intro to Rails Give Camp Atlanta
Intro to Rails Give Camp AtlantaIntro to Rails Give Camp Atlanta
Intro to Rails Give Camp AtlantaJason Noble
 
Restful api design
Restful api designRestful api design
Restful api designMizan Riqzia
 
Securing JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top TenSecuring JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top TenDavid Chandler
 
Salesforce Apex Hours : How Lightning Platform Query Optimizer works for LDV
Salesforce Apex Hours : How Lightning Platform Query Optimizer works for LDVSalesforce Apex Hours : How Lightning Platform Query Optimizer works for LDV
Salesforce Apex Hours : How Lightning Platform Query Optimizer works for LDVAmit Chaudhary
 
Intro to Ruby on Rails
Intro to Ruby on RailsIntro to Ruby on Rails
Intro to Ruby on RailsMark Menard
 
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...Fwdays
 
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fastHow Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fastAtlassian
 
Building ColdFusion And AngularJS Applications
Building ColdFusion And AngularJS ApplicationsBuilding ColdFusion And AngularJS Applications
Building ColdFusion And AngularJS ApplicationsColdFusionConference
 

Mais procurados (20)

Troubleshooting APEX Performance Issues
Troubleshooting APEX Performance IssuesTroubleshooting APEX Performance Issues
Troubleshooting APEX Performance Issues
 
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQDynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
REST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterREST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in Codeigniter
 
Bridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMBridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEM
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with Laravel
 
RESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web APIRESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web API
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
Intro to Rails Give Camp Atlanta
Intro to Rails Give Camp AtlantaIntro to Rails Give Camp Atlanta
Intro to Rails Give Camp Atlanta
 
APEX Migration
APEX MigrationAPEX Migration
APEX Migration
 
Ionic by Example
Ionic by ExampleIonic by Example
Ionic by Example
 
Restful api design
Restful api designRestful api design
Restful api design
 
Catalog display
Catalog displayCatalog display
Catalog display
 
Dash of ajax
Dash of ajaxDash of ajax
Dash of ajax
 
Securing JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top TenSecuring JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top Ten
 
Salesforce Apex Hours : How Lightning Platform Query Optimizer works for LDV
Salesforce Apex Hours : How Lightning Platform Query Optimizer works for LDVSalesforce Apex Hours : How Lightning Platform Query Optimizer works for LDV
Salesforce Apex Hours : How Lightning Platform Query Optimizer works for LDV
 
Intro to Ruby on Rails
Intro to Ruby on RailsIntro to Ruby on Rails
Intro to Ruby on Rails
 
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
 
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fastHow Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
 
Building ColdFusion And AngularJS Applications
Building ColdFusion And AngularJS ApplicationsBuilding ColdFusion And AngularJS Applications
Building ColdFusion And AngularJS Applications
 

Destaque

Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)
Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)
Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)Christian Rokitta
 
G 5 eisodos_exodos_ekhorisi
G 5 eisodos_exodos_ekhorisiG 5 eisodos_exodos_ekhorisi
G 5 eisodos_exodos_ekhorisiganidoud
 
G 1 algorithms_programming
G 1 algorithms_programmingG 1 algorithms_programming
G 1 algorithms_programmingganidoud
 
Let's cross the bridge
Let's cross the bridgeLet's cross the bridge
Let's cross the bridgeganidoud
 
το λυκόφως του βυζαντίου
το λυκόφως του βυζαντίουτο λυκόφως του βυζαντίου
το λυκόφως του βυζαντίουganidoud
 
α 11 internet
α 11 internetα 11 internet
α 11 internetganidoud
 
The GolfLet
The GolfLetThe GolfLet
The GolfLetAbe Kim
 
γ 2 1_πραξεις-εξοδος-εισοδος
γ 2 1_πραξεις-εξοδος-εισοδοςγ 2 1_πραξεις-εξοδος-εισοδος
γ 2 1_πραξεις-εξοδος-εισοδοςganidoud
 
Introducing the Royal Scottish Geographical Society
Introducing the Royal Scottish Geographical SocietyIntroducing the Royal Scottish Geographical Society
Introducing the Royal Scottish Geographical SocietyRSGS
 
παρουσίαση 9γυμνάσιοκαλαμαριάς 1
παρουσίαση 9γυμνάσιοκαλαμαριάς 1παρουσίαση 9γυμνάσιοκαλαμαριάς 1
παρουσίαση 9γυμνάσιοκαλαμαριάς 1ganidoud
 
Face off apex template and themes - 3.0 - k-scope11
Face off   apex template and themes - 3.0 - k-scope11Face off   apex template and themes - 3.0 - k-scope11
Face off apex template and themes - 3.0 - k-scope11Christian Rokitta
 
Responsive Web Design & APEX Theme 25
Responsive Web Design & APEX Theme 25Responsive Web Design & APEX Theme 25
Responsive Web Design & APEX Theme 25Christian Rokitta
 
Confessions of an APEX Design Geek
Confessions of an APEX Design GeekConfessions of an APEX Design Geek
Confessions of an APEX Design GeekChristian Rokitta
 

Destaque (15)

Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)
Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)
Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)
 
G 5 eisodos_exodos_ekhorisi
G 5 eisodos_exodos_ekhorisiG 5 eisodos_exodos_ekhorisi
G 5 eisodos_exodos_ekhorisi
 
G 1 algorithms_programming
G 1 algorithms_programmingG 1 algorithms_programming
G 1 algorithms_programming
 
Let's cross the bridge
Let's cross the bridgeLet's cross the bridge
Let's cross the bridge
 
το λυκόφως του βυζαντίου
το λυκόφως του βυζαντίουτο λυκόφως του βυζαντίου
το λυκόφως του βυζαντίου
 
α 11 internet
α 11 internetα 11 internet
α 11 internet
 
The GolfLet
The GolfLetThe GolfLet
The GolfLet
 
γ 2 1_πραξεις-εξοδος-εισοδος
γ 2 1_πραξεις-εξοδος-εισοδοςγ 2 1_πραξεις-εξοδος-εισοδος
γ 2 1_πραξεις-εξοδος-εισοδος
 
Introducing the Royal Scottish Geographical Society
Introducing the Royal Scottish Geographical SocietyIntroducing the Royal Scottish Geographical Society
Introducing the Royal Scottish Geographical Society
 
APEX & Cookie Monster
APEX & Cookie MonsterAPEX & Cookie Monster
APEX & Cookie Monster
 
Browser Developer Tools
Browser Developer ToolsBrowser Developer Tools
Browser Developer Tools
 
παρουσίαση 9γυμνάσιοκαλαμαριάς 1
παρουσίαση 9γυμνάσιοκαλαμαριάς 1παρουσίαση 9γυμνάσιοκαλαμαριάς 1
παρουσίαση 9γυμνάσιοκαλαμαριάς 1
 
Face off apex template and themes - 3.0 - k-scope11
Face off   apex template and themes - 3.0 - k-scope11Face off   apex template and themes - 3.0 - k-scope11
Face off apex template and themes - 3.0 - k-scope11
 
Responsive Web Design & APEX Theme 25
Responsive Web Design & APEX Theme 25Responsive Web Design & APEX Theme 25
Responsive Web Design & APEX Theme 25
 
Confessions of an APEX Design Geek
Confessions of an APEX Design GeekConfessions of an APEX Design Geek
Confessions of an APEX Design Geek
 

Semelhante a Plugins unplugged

AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep DiveGabriel Walt
 
Relevance trilogy may dream be with you! (dec17)
Relevance trilogy  may dream be with you! (dec17)Relevance trilogy  may dream be with you! (dec17)
Relevance trilogy may dream be with you! (dec17)Woonsan Ko
 
Summer '16 Realease notes
Summer '16 Realease notesSummer '16 Realease notes
Summer '16 Realease notesaggopal1011
 
DynamicRecord Presentation
DynamicRecord PresentationDynamicRecord Presentation
DynamicRecord Presentationlinoj
 
AEM Sightly Template Language
AEM Sightly Template LanguageAEM Sightly Template Language
AEM Sightly Template LanguageGabriel Walt
 
Salesforce meetup | Lightning Web Component
Salesforce meetup | Lightning Web ComponentSalesforce meetup | Lightning Web Component
Salesforce meetup | Lightning Web ComponentAccenture Hungary
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Chris Alfano
 
Custom post-framworks
Custom post-framworksCustom post-framworks
Custom post-framworkswcto2017
 
Custom post-framworks
Custom post-framworksCustom post-framworks
Custom post-framworksKiera Howe
 
Tk2323 lecture 9 api json
Tk2323 lecture 9   api jsonTk2323 lecture 9   api json
Tk2323 lecture 9 api jsonMengChun Lam
 
Salesforce Lightning Web Components Overview
Salesforce Lightning Web Components OverviewSalesforce Lightning Web Components Overview
Salesforce Lightning Web Components OverviewNagarjuna Kaipu
 
VBA API for scriptDB primer
VBA API for scriptDB primerVBA API for scriptDB primer
VBA API for scriptDB primerBruce McPherson
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
JahiaOne - Jahia7: Query and Search API under the Hood
JahiaOne - Jahia7: Query and Search API under the HoodJahiaOne - Jahia7: Query and Search API under the Hood
JahiaOne - Jahia7: Query and Search API under the HoodJahia Solutions Group
 
Building social and RESTful frameworks
Building social and RESTful frameworksBuilding social and RESTful frameworks
Building social and RESTful frameworksbrendonschwartz
 
Prairie DevCon 2015 - Crafting Evolvable API Responses
Prairie DevCon 2015 - Crafting Evolvable API ResponsesPrairie DevCon 2015 - Crafting Evolvable API Responses
Prairie DevCon 2015 - Crafting Evolvable API Responsesdarrelmiller71
 
Introduction to GraphQL and AWS Appsync on AWS - iOS
Introduction to GraphQL and AWS Appsync on AWS - iOSIntroduction to GraphQL and AWS Appsync on AWS - iOS
Introduction to GraphQL and AWS Appsync on AWS - iOSAmazon Web Services
 

Semelhante a Plugins unplugged (20)

AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
 
Relevance trilogy may dream be with you! (dec17)
Relevance trilogy  may dream be with you! (dec17)Relevance trilogy  may dream be with you! (dec17)
Relevance trilogy may dream be with you! (dec17)
 
Summer '16 Realease notes
Summer '16 Realease notesSummer '16 Realease notes
Summer '16 Realease notes
 
DynamicRecord Presentation
DynamicRecord PresentationDynamicRecord Presentation
DynamicRecord Presentation
 
AEM Sightly Template Language
AEM Sightly Template LanguageAEM Sightly Template Language
AEM Sightly Template Language
 
Salesforce meetup | Lightning Web Component
Salesforce meetup | Lightning Web ComponentSalesforce meetup | Lightning Web Component
Salesforce meetup | Lightning Web Component
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
Ams adapters
Ams adaptersAms adapters
Ams adapters
 
Custom post-framworks
Custom post-framworksCustom post-framworks
Custom post-framworks
 
Custom post-framworks
Custom post-framworksCustom post-framworks
Custom post-framworks
 
Tk2323 lecture 9 api json
Tk2323 lecture 9   api jsonTk2323 lecture 9   api json
Tk2323 lecture 9 api json
 
Salesforce Lightning Web Components Overview
Salesforce Lightning Web Components OverviewSalesforce Lightning Web Components Overview
Salesforce Lightning Web Components Overview
 
VBA API for scriptDB primer
VBA API for scriptDB primerVBA API for scriptDB primer
VBA API for scriptDB primer
 
JPA 2.0
JPA 2.0JPA 2.0
JPA 2.0
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
JahiaOne - Jahia7: Query and Search API under the Hood
JahiaOne - Jahia7: Query and Search API under the HoodJahiaOne - Jahia7: Query and Search API under the Hood
JahiaOne - Jahia7: Query and Search API under the Hood
 
RubaDevi_Salesforce
RubaDevi_SalesforceRubaDevi_Salesforce
RubaDevi_Salesforce
 
Building social and RESTful frameworks
Building social and RESTful frameworksBuilding social and RESTful frameworks
Building social and RESTful frameworks
 
Prairie DevCon 2015 - Crafting Evolvable API Responses
Prairie DevCon 2015 - Crafting Evolvable API ResponsesPrairie DevCon 2015 - Crafting Evolvable API Responses
Prairie DevCon 2015 - Crafting Evolvable API Responses
 
Introduction to GraphQL and AWS Appsync on AWS - iOS
Introduction to GraphQL and AWS Appsync on AWS - iOSIntroduction to GraphQL and AWS Appsync on AWS - iOS
Introduction to GraphQL and AWS Appsync on AWS - iOS
 

Mais de Christian Rokitta

Hitchhiker's guide to the Universal Theme
Hitchhiker's guide to the Universal ThemeHitchhiker's guide to the Universal Theme
Hitchhiker's guide to the Universal ThemeChristian Rokitta
 
Browser Developer Tools for APEX Developers
Browser Developer Tools for APEX DevelopersBrowser Developer Tools for APEX Developers
Browser Developer Tools for APEX DevelopersChristian Rokitta
 
Bootstrapify Universal Theme
Bootstrapify Universal ThemeBootstrapify Universal Theme
Bootstrapify Universal ThemeChristian Rokitta
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)Christian Rokitta
 

Mais de Christian Rokitta (6)

Keep me moving goin mobile
Keep me moving   goin mobileKeep me moving   goin mobile
Keep me moving goin mobile
 
Hitchhiker's guide to the Universal Theme
Hitchhiker's guide to the Universal ThemeHitchhiker's guide to the Universal Theme
Hitchhiker's guide to the Universal Theme
 
Browser Developer Tools for APEX Developers
Browser Developer Tools for APEX DevelopersBrowser Developer Tools for APEX Developers
Browser Developer Tools for APEX Developers
 
Bootstrapify Universal Theme
Bootstrapify Universal ThemeBootstrapify Universal Theme
Bootstrapify Universal Theme
 
Challenges going mobile
Challenges going mobileChallenges going mobile
Challenges going mobile
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)
 

Último

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyAnusha Are
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 

Último (20)

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 

Plugins unplugged

  • 2.
  • 4. APEX Versions vs Plug-in Features 5 4
  • 6. APEX Page States Generate HTML Templates, Definitions Resources CSS, JS, Images Dynamic Actions Inline JS AJAX Calls (DB) Submitting Form Validating Processing
  • 7. Reasons for Using APEX declarative: hiding complexity behind properties; especially HTML, CSS and JavaScript catalogue of build-in components
  • 8. Limitations common components evolving standards evolving browser/device capabilities users expectations
  • 9. APEX is an Extensible Framework Add additional declarative functionality
  • 11. Plug-in Types vs Page States
  • 17. Authentication Type Plug-in Authentication schemes are used to determine if the user can access the application. As such it is not run on a page or component level.
  • 18. When to use Plug-ins not possible with standard declarative APEX hiding complexity reusability (application, instance, public) maintainability
  • 19. Skills to build APEX Plug-ins SQL PL/SQL
  • 22. Inspiration write your own cut-n-paste code libraries/jQuery Plug-ins Lots of well-know public available APEX plug-ins are based on existing JS/jQ solutions
  • 23.
  • 26. jQuery Plug-in Wishlist • JS/CSS files/library • Doc, HTML Example, how-to, … • Options (Configuration) • Methods (API) • Events
  • 28.
  • 30. Common Plug-in Structure Plugin PL/SQL function signature • render • AJAX-callback PL/SQL Types • configuration • state • parameter passing APEX PL/SQL API helper • include JS and CSS files • … APEX JavaScript API • initiate AJAX calls • …
  • 31. Render Function function <name of function> ( p_<type> in apex_plugin.t_<type> , p_plugin in apex_plugin.t_plugin [, p_...] ) return apex_plugin.t_<type>_render_result
  • 32. apex_plugin.t_<type> type t_<type> is record ( <param n> … , <param n> , attribute_01 varchar2(32767) … , attribute_NN varchar2(32767) ); std. declarative attributes additional plug-in specific attributes (page component) APEX Version dependencies
  • 33. apex_plugin.t_plugin type t_plugin is record ( name varchar2(45), file_prefix varchar2(4000), attribute_01 varchar2(32767), … , attribute_15 varchar2(32767) ); APEX 4 max 10 attr. additional plug-in specific attributes application level (Component Settings)
  • 34. Item Type Render Function function <name of function> ( p_item in apex_plugin.t_item_item , p_plugin in apex_plugin.t_plugin , p_value in varchar2 , p_is_readonly in boolean , p_is_printer_friendly in boolean ) return apex_plugin.t_page_item_render_result
  • 35. t_page_item type t_page_item is record ( id number , name varchar2(255) , label varchar2(4000) , plain_label varchar2(4000) , label_id varchar2(255) , placeholder varchar2(255) , format_mask varchar2(255) , is_required boolean , lov_definition varchar2(4000) , lov_display_extra boolean , lov_display_null boolean , lov_null_text varchar2(255) , lov_null_value varchar2(255) , lov_cascade_parent_items varchar2(255) , ajax_items_to_submit varchar2(255) , ajax_optimize_refresh boolean , element_width number , element_max_length number , element_height number , element_css_classes varchar2(255) , element_attributes varchar2(2000) , element_option_attributes varchar2(4000) , escape_output boolean , attribute_01 varchar2(32767) , … , attribute_15 varchar2(32767));
  • 36. Coding the Render Function generate HTML for object include assets (JS, CSS, …) generate JS snippets
  • 37. Coding the 3 Simple Steps sys.htp.p('<input type="text" id="'||p_page_item.id|| ' name="'||p_page_item.name||'" />'); apex_javascript.add_onload_code ( p_code => '$( "#'||p_page_item.id||'" ).timeDropper();' ,p_key => null ); apex_javascript.add_library (p_name => 'timedropper' , p_directory => p_plugin.file_prefix , p_check_to_add_minified => true ); apex_css.add_file (p_name => 'timefropper' , p_directory => p_plugin.file_prefix );
  • 38. Basic Demo Render Function function render_timedropper(p_item in apex_plugin.t_page_item , p_plugin in apex_plugin.t_plugin , p_value in varchar2 , p_is_readonly in boolean , p_is_printer_friendly in boolean) return apex_plugin.t_page_item_render_result is v_result apex_plugin.t_page_item_render_result; begin apex_javascript.add_library(p_name => 'timedropper‘ , p_directory => p_plugin.file_prefix, p_check_to_add_minified => true); apex_css.add_file(p_name => 'timefropper', p_directory => p_plugin.file_prefix); sys.htp.p('<input type="text" id="' || p_page_item.id || '" name="' || p_page_item || '" />'); apex_javascript.add_onload_code(p_code => '$( "#' || p_page_item.id || '" ).timeDropper();', p_key => null); return v_result; end;
  • 39.
  • 40. Beyond Basic Render Function item (component) std. attributes validation (for item type plugin) AJAX Callback
  • 41. Page Item Type Validation Callback type t_page_item_validation_result is record( message varchar2(32767) , display_location varchar2(40) , page_item_name varchar2(255) );
  • 42. Plug-in AJAX Callback function <name of function> ( p_<type> in apex_plugin.t_<type>, p_plugin in apex_plugin.t_plugin ) return apex_plugin.t_<type>_ajax_result
  • 43. Callin the AJAX Callback apex.server.plugin ( pAjaxIdentifier, { /*apex_plugin.get_ajax_identifier*/ x01-10: "...", pageItems: "#P1_DEPTNO,#P1_EMPNO" }, { refreshObject: "#P1_MY_LIST", loadingIndicator: "#P1_MY_LIST", success: function( pData ) { ... do something ... }, any jQuery.ajax option, });
  • 45.
  • 46. Q&A