SlideShare a Scribd company logo
1 of 60
Download to read offline
1
Top ten tweaks for
the Interactive Grid
Roel Hartman
APEX Consulting
@RoelH
X
3
Copyright © 2017 APEX Consulting
Interactive Grid
The “basics”
5
6
7
Copyright © 2017 APEX Consulting
1. Tweak the Toolbar
Remove “Finder Drop Down”
8
Declarative settings for an IR
9
Declarative settings for an IG
10
JavaScript Configuration
11
JavaScript Configuration
12
function( options ) {
options.toolbar = false;
return options;
}
“toolbar” is just one of the options
13
apex.region("emp").widget().interactiveGrid("option").config
Disable “Finder Drop Down”
14
Disable “Finder Drop Down”
15
function( options ) {
var $ = apex.jQuery,
toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(),
toolbarGroup = toolbarData.toolbarFind("search");
// toolbarGroup points to "search" object, containing “controls” array
// remove first element from that array
toolbarGroup.controls.shift();
// pass back the modified object
options.toolbarData = toolbarData;
return options;
}
Copyright © 2017 APEX Consulting
2. Tweak the Toolbar
Add a button on the Search Bar
16
Add a button on the Search Bar - IR
17
Add a button on the Search Bar - IG
18
function( options ) {
var $ = apex.jQuery,
toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(),
toolbarGroup = toolbarData.toolbarFind("actions3");
// toolbarGroup is "actions3" object, with the "Add Row" button
// add an element to that array
toolbarGroup.controls.push({ type : "BUTTON"
, action : "my-custom-action"
, label : "My Button"
, icon : "fa fa-user-secret"
, iconBeforeLabel : true
});
// pass back the modified object
options.toolbarData = toolbarData;
return options;
}
Add a button on the Search Bar - IG (alt.)
19
function( options ) {
var $ = apex.jQuery,
toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(),
toolbarGroup = { id : “myToolBarGroup"
, controls : [{ type : "BUTTON"
, action : "my-custom-action"
, label : "My Button"
, icon : "fa fa-user-secret"
, iconBeforeLabel : true
}]
};
// toolbarGroup is my new created object
toolbarData.push( toolbarGroup );
// pass back the modified object
options.toolbarData = toolbarData;
return options;
}
Copyright © 2017 APEX Consulting
3. Tweak the Action Menu
Remove default functions
20
Declarative settings for an IR
21
Declarative settings for an IG
22
Remove default Actions
23
function( options ) {
options.initActions = function( actions ){
actions.hide("show-columns-dialog");
actions.hide("show-control-break-dialog");
actions.hide("show-aggregate-dialog");
actions.hide("show-help-dialog");
actions.hide("show-sort-dialog");
actions.hide("refresh");
// actions.hide("show-filter-dialog");
// actions.hide("show-flashback-dialog");
// actions.hide("show-highlight-dialog");
actions.disable("chart-view");
}
return options;
}
Remove default Actions (features)
24
function( options ) {
// Disable Filter / Flashback as "features"
options.features = options.features || {};
options.features.filter = false;
options.features.flashback = false;
return options;
}
Remove default Actions (Grid View features)
25
function( options ) {
// Disable Highlight "feature" of the Grid View
options.views = options.views || {};
options.views.grid = options.views.grid || {};
options.views.grid.features =
options.views.grid.features || {};
options.views.grid.features.highlight = false;
return options;
}
Copyright © 2017 APEX Consulting
4. Tweak the Action Menu
Add an Action to a Toolbar Button
26
Add a button on the Search Bar - IG
27
function( options ) {
var $ = apex.jQuery,
toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(),
toolbarGroup = { id : “myToolBarGroup"
, controls : [{ type : "BUTTON"
, action : "my-custom-action"
, label : "My Button"
, icon : "fa fa-user-secret"
, iconBeforeLabel : true
}]
};
// toolbarGroup is my new created object
toolbarData.push( toolbarGroup );
// pass back the modified object
options.toolbarData = toolbarData;
return options;
}
Link Action to Button
28
function( options ) {
…
options.initActions = function( actions ){
actions.add(
{ name : "my-custom-action"
, action : function( event, element ) {
apex.event.trigger( element, "my-custom-action" );
}
});
}
return options;
}
Copyright © 2017 APEX Consulting
5. Modify Column Headings
Remove sorting, hiding, aggregate etc.
29
Remove column header features
30
Remove column header features - region level
31
function( options ){
options.views = options.views || {};
options.views.grid = options.views.grid || {};
options.views.grid.features = options.views.grid.features||{};
options.views.grid.features.reorderColumns = false;
options.views.grid.features.resizeColumns = false;
options.views.grid.features.sort = false;
return options;
}
Where to find all these options?
32
Remove column header features - column level
33
function( options ){
options.features = options.features || {};
options.features.canHide = false;
options.features.controlBreak = false;
options.features.aggregate = false;
//options.features.freeze = false;
return options;
}
Reuse settings
• Create JavaScript function (in a - static - file)
34
function myColumnSettings( options ){
options.features = options.features || {};
options.features.canHide = false;
options.features.controlBreak = false;
options.features.aggregate = false;
return options;
}
• Call the function
myColumnSettings
Reuse settings and override
35
function( options ){
options = myColumnSettings( options );
options.features.aggregate = true;
return options;
}
• Call the function
Copyright © 2017 APEX Consulting
6. Modify Column Headings
Rotate column heading
36
Rotate column headings
37
Rotate column headings
38
.a-GV-header {
height: 120px;
}
.a-GV-w-hdr .a-GV-headerLabel {
transform: translateX(25%) rotate(45deg);
display: inline-block;
}
Copyright © 2017 APEX Consulting
7. Customise tooltips
Show “hidden” columns as a tooltip
39
Customise tooltip
40
Customise tooltip
41
function( options ){
options.defaultGridViewOptions =
{ tooltip:
{ content: function(callback, model, recordMeta, colMeta, columnDef ) {
return model.getValue( recordMeta.record, "JOB" ) +
"<br/>$" + model.getValue( recordMeta.record, "SAL" );
}
}
}
return options;
}
Copyright © 2017 APEX Consulting
8. Modify row menu
Delete and add entries
42
Modify row menu
43
Modify row menu
44
function(options) {
options.initActions = function( actions ) {
actions.remove("single-row-view");
actions.remove("row-add-row");
actions.remove("row-duplicate");
actions.remove("row-delete");
actions.remove("row-refresh");
actions.remove("row-revert");
actions.remove("selection-duplicate");
actions.remove("selection-delete");
actions.remove("selection-refresh");
actions.remove("selection-revert");
}
return options;
}
Modify row menu
45
apex.region("emp").widget()
.interactiveGrid("getViews").grid
.rowActionMenu$.menu("option")
.items.push({type:"action", label:"Hi", icon : "fa fa-hand-paper-o", action:
function(){alert("Hi y'all")}});
apex.region("emp").widget()
.interactiveGrid("getViews").grid
.selActionMenu$.menu("option")
.items.push({type:"action", label:"Hi", icon : "fa fa-thumbs-up", action:
function(){alert("Good work by all selected employees")}});
Modify row menu
46
Modify row menu
47
Copyright © 2017 APEX Consulting
9. Refresh row on change
without a full region refresh
48
Refresh (just the) row on change
49
Refresh (just the) row on change
50
Refresh (just the) row on change
51
Refresh (just the) row on change
52
Copyright © 2017 APEX Consulting
10. Refresh upon delete
without a full region refresh
53
Refresh upon delete
54
Refresh upon delete
55
Refresh upon delete
56
var records, recordId, iNode,
currentViewImpl = apex.region('emp').widget().interactiveGrid("getViews", "grid");
records = currentViewImpl.getSelectedRecords();
currentViewImpl.model.fetchRecords(records, function(err){
if (err) {
apex.message.clearErrors();
recordId = currentViewImpl.model.getRecordId(records[0]);
iNode = currentViewImpl.model.getRecordMetadata(recordId);
iNode.canDelete = true;
currentViewImpl.model.setOption('editable', true);
currentViewImpl.model.deleteRecords(records);
currentViewImpl.model.clearChanges();
}
});
Top ten
1. Remove objects from the standard Toolbar
2. Add objects to the standard Toolbar
3. Remove / disable standard Actions
4. Add your own Actions
5. Modify column functions
6. Modify column headings
7. Customise tooltips
8. Modify row level menu
9. Refresh (just the) row on change
10. Remove (just the) row on delete
57
Links to resources
• http://hardlikesoftware.com/weblog/2016/06/08/interactive-grid-under-the-hood/
• http://hardlikesoftware.com/weblog/2017/01/06/interactive-grid-column-widths/
• http://hardlikesoftware.com/weblog/2017/01/18/how-to-hack-apex-interactive-grid-part-1/
• http://hardlikesoftware.com/weblog/2017/01/24/how-to-hack-apex-interactive-grid-part-2/
• http://hardlikesoftware.com/weblog/2017/02/20/how-to-hack-apex-interactive-grid-part-3/
• http://hardlikesoftware.com/weblog/2017/03/31/how-to-hack-apex-interactive-grid-part-4/
• http://hardlikesoftware.com/weblog/2017/07/10/apex-interactive-grid-cookbook/
• https://github.com/mgoricki/orclapex-ig-cheat-sheet
• https://github.com/Dani3lSun/apex-plugin-extend_ig_menu
58
Copyright © 2017 APEX Consulting
Q& Aroel@apexconsulting.nl
http://www.apexconsulting.nl
@RoelH
59
@roelh
roel@apexconsulting.nl
http://www.apexconsulting.nl
Copyright © 2017 APEX Consulting
60

More Related Content

What's hot

The Functional Programming Triad of Map, Filter and Fold
The Functional Programming Triad of Map, Filter and FoldThe Functional Programming Triad of Map, Filter and Fold
The Functional Programming Triad of Map, Filter and FoldPhilip Schwarz
 
48742447 11g-sql-fundamentals-ii-additional-practices-and-solutions
48742447 11g-sql-fundamentals-ii-additional-practices-and-solutions48742447 11g-sql-fundamentals-ii-additional-practices-and-solutions
48742447 11g-sql-fundamentals-ii-additional-practices-and-solutionsAshwin Kumar
 
Exploring ZIO Prelude: The game changer for typeclasses in Scala
Exploring ZIO Prelude: The game changer for typeclasses in ScalaExploring ZIO Prelude: The game changer for typeclasses in Scala
Exploring ZIO Prelude: The game changer for typeclasses in ScalaJorge Vásquez
 
Implementing the IO Monad in Scala
Implementing the IO Monad in ScalaImplementing the IO Monad in Scala
Implementing the IO Monad in ScalaHermann Hueck
 
ZIO-Direct - Functional Scala 2022
ZIO-Direct - Functional Scala 2022ZIO-Direct - Functional Scala 2022
ZIO-Direct - Functional Scala 2022Alexander Ioffe
 
CSS Paged Media - A review of tools and techniques
CSS Paged Media - A review of tools and techniquesCSS Paged Media - A review of tools and techniques
CSS Paged Media - A review of tools and techniquesAndreas Jung
 
The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6Rob Eisenberg
 
How to use source control with apex?
How to use source control with apex?How to use source control with apex?
How to use source control with apex?Oliver Lemm
 
Adapting and adopting spm v04
Adapting and adopting spm v04Adapting and adopting spm v04
Adapting and adopting spm v04Carlos Sierra
 
Boost your productivity with Scala tooling!
Boost your productivity  with Scala tooling!Boost your productivity  with Scala tooling!
Boost your productivity with Scala tooling!MeriamLachkar1
 
Javascript Module Patterns
Javascript Module PatternsJavascript Module Patterns
Javascript Module PatternsNicholas Jansma
 
Les01 (retrieving data using the sql select statement)
Les01 (retrieving data using the sql select statement)Les01 (retrieving data using the sql select statement)
Les01 (retrieving data using the sql select statement)Achmad Solichin
 

What's hot (20)

The Functional Programming Triad of Map, Filter and Fold
The Functional Programming Triad of Map, Filter and FoldThe Functional Programming Triad of Map, Filter and Fold
The Functional Programming Triad of Map, Filter and Fold
 
48742447 11g-sql-fundamentals-ii-additional-practices-and-solutions
48742447 11g-sql-fundamentals-ii-additional-practices-and-solutions48742447 11g-sql-fundamentals-ii-additional-practices-and-solutions
48742447 11g-sql-fundamentals-ii-additional-practices-and-solutions
 
jQuery PPT
jQuery PPTjQuery PPT
jQuery PPT
 
Exploring ZIO Prelude: The game changer for typeclasses in Scala
Exploring ZIO Prelude: The game changer for typeclasses in ScalaExploring ZIO Prelude: The game changer for typeclasses in Scala
Exploring ZIO Prelude: The game changer for typeclasses in Scala
 
Implementing the IO Monad in Scala
Implementing the IO Monad in ScalaImplementing the IO Monad in Scala
Implementing the IO Monad in Scala
 
ZIO-Direct - Functional Scala 2022
ZIO-Direct - Functional Scala 2022ZIO-Direct - Functional Scala 2022
ZIO-Direct - Functional Scala 2022
 
ZIO Queue
ZIO QueueZIO Queue
ZIO Queue
 
SQL Tuning 101
SQL Tuning 101SQL Tuning 101
SQL Tuning 101
 
CSS Paged Media - A review of tools and techniques
CSS Paged Media - A review of tools and techniquesCSS Paged Media - A review of tools and techniques
CSS Paged Media - A review of tools and techniques
 
The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6
 
How to use source control with apex?
How to use source control with apex?How to use source control with apex?
How to use source control with apex?
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Adapting and adopting spm v04
Adapting and adopting spm v04Adapting and adopting spm v04
Adapting and adopting spm v04
 
Working with JSON
Working with JSONWorking with JSON
Working with JSON
 
Boost your productivity with Scala tooling!
Boost your productivity  with Scala tooling!Boost your productivity  with Scala tooling!
Boost your productivity with Scala tooling!
 
Javascript Module Patterns
Javascript Module PatternsJavascript Module Patterns
Javascript Module Patterns
 
SQL Functions
SQL FunctionsSQL Functions
SQL Functions
 
Ms sql-server
Ms sql-serverMs sql-server
Ms sql-server
 
confirm & alert
confirm & alertconfirm & alert
confirm & alert
 
Les01 (retrieving data using the sql select statement)
Les01 (retrieving data using the sql select statement)Les01 (retrieving data using the sql select statement)
Les01 (retrieving data using the sql select statement)
 

Similar to Tweaking the interactive grid

Aplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com BackboneAplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com BackboneRafael Felix da Silva
 
Taming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsJarod Ferguson
 
Knockoutjs UG meeting presentation
Knockoutjs UG meeting presentationKnockoutjs UG meeting presentation
Knockoutjs UG meeting presentationValdis Iljuconoks
 
First Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven DevelopmentFirst Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven DevelopmentNuvole
 
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCpootsbook
 
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web ComponentsFelix Arntz
 
TechDays 2016 - Developing websites using asp.net core mvc6 and entity framew...
TechDays 2016 - Developing websites using asp.net core mvc6 and entity framew...TechDays 2016 - Developing websites using asp.net core mvc6 and entity framew...
TechDays 2016 - Developing websites using asp.net core mvc6 and entity framew...Fons Sonnemans
 
sfDay Cologne - Sonata Admin Bundle
sfDay Cologne - Sonata Admin BundlesfDay Cologne - Sonata Admin Bundle
sfDay Cologne - Sonata Admin Bundleth0masr
 
Bindings: the zen of montage
Bindings: the zen of montageBindings: the zen of montage
Bindings: the zen of montageKris Kowal
 
Building complex User Interfaces with Sitecore and React
Building complex User Interfaces with Sitecore and ReactBuilding complex User Interfaces with Sitecore and React
Building complex User Interfaces with Sitecore and ReactJonne Kats
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptGuy Royse
 
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6Dmitry Soshnikov
 
Backbone.js: Run your Application Inside The Browser
Backbone.js: Run your Application Inside The BrowserBackbone.js: Run your Application Inside The Browser
Backbone.js: Run your Application Inside The BrowserHoward Lewis Ship
 
Creating custom views
Creating custom viewsCreating custom views
Creating custom viewsMu Chun Wang
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Chris Alfano
 
FunctionalJS - George Shevtsov
FunctionalJS - George ShevtsovFunctionalJS - George Shevtsov
FunctionalJS - George ShevtsovGeorgiy Shevtsov
 
1. George Shevtsov - Functional JavaScript
1. George Shevtsov - Functional JavaScript1. George Shevtsov - Functional JavaScript
1. George Shevtsov - Functional JavaScriptInnovecs
 

Similar to Tweaking the interactive grid (20)

Aplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com BackboneAplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com Backbone
 
Taming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.js
 
Action bar
Action barAction bar
Action bar
 
Knockoutjs UG meeting presentation
Knockoutjs UG meeting presentationKnockoutjs UG meeting presentation
Knockoutjs UG meeting presentation
 
First Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven DevelopmentFirst Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven Development
 
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVC
 
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web Components
 
TechDays 2016 - Developing websites using asp.net core mvc6 and entity framew...
TechDays 2016 - Developing websites using asp.net core mvc6 and entity framew...TechDays 2016 - Developing websites using asp.net core mvc6 and entity framew...
TechDays 2016 - Developing websites using asp.net core mvc6 and entity framew...
 
sfDay Cologne - Sonata Admin Bundle
sfDay Cologne - Sonata Admin BundlesfDay Cologne - Sonata Admin Bundle
sfDay Cologne - Sonata Admin Bundle
 
Bindings: the zen of montage
Bindings: the zen of montageBindings: the zen of montage
Bindings: the zen of montage
 
Building complex User Interfaces with Sitecore and React
Building complex User Interfaces with Sitecore and ReactBuilding complex User Interfaces with Sitecore and React
Building complex User Interfaces with Sitecore and React
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
 
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
 
W-JAX 09 - Lift
W-JAX 09 - LiftW-JAX 09 - Lift
W-JAX 09 - Lift
 
Backbone.js: Run your Application Inside The Browser
Backbone.js: Run your Application Inside The BrowserBackbone.js: Run your Application Inside The Browser
Backbone.js: Run your Application Inside The Browser
 
Creating custom views
Creating custom viewsCreating custom views
Creating custom views
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
Backbone js
Backbone jsBackbone js
Backbone js
 
FunctionalJS - George Shevtsov
FunctionalJS - George ShevtsovFunctionalJS - George Shevtsov
FunctionalJS - George Shevtsov
 
1. George Shevtsov - Functional JavaScript
1. George Shevtsov - Functional JavaScript1. George Shevtsov - Functional JavaScript
1. George Shevtsov - Functional JavaScript
 

More from Roel Hartman

APEX Bad Practices
APEX Bad PracticesAPEX Bad Practices
APEX Bad PracticesRoel Hartman
 
Docker for Dummies
Docker for DummiesDocker for Dummies
Docker for DummiesRoel Hartman
 
A deep dive into APEX JET charts
A deep dive into APEX JET chartsA deep dive into APEX JET charts
A deep dive into APEX JET chartsRoel Hartman
 
Mastering universal theme
Mastering universal themeMastering universal theme
Mastering universal themeRoel Hartman
 
APEX Developers : Do More With LESS !
APEX Developers : Do More With LESS !APEX Developers : Do More With LESS !
APEX Developers : Do More With LESS !Roel Hartman
 
Ten Tiny Things To Try Today - Hidden APEX5 Gems Revealed
Ten Tiny Things To Try Today - Hidden APEX5 Gems RevealedTen Tiny Things To Try Today - Hidden APEX5 Gems Revealed
Ten Tiny Things To Try Today - Hidden APEX5 Gems RevealedRoel Hartman
 
Best of both worlds: Create hybrid mobile applications with Oracle Applicatio...
Best of both worlds: Create hybrid mobile applications with Oracle Applicatio...Best of both worlds: Create hybrid mobile applications with Oracle Applicatio...
Best of both worlds: Create hybrid mobile applications with Oracle Applicatio...Roel Hartman
 
APEX printing with BI Publisher
APEX printing with BI PublisherAPEX printing with BI Publisher
APEX printing with BI PublisherRoel Hartman
 
Troubleshooting APEX Performance Issues
Troubleshooting APEX Performance IssuesTroubleshooting APEX Performance Issues
Troubleshooting APEX Performance IssuesRoel Hartman
 
Automated testing APEX Applications
Automated testing APEX ApplicationsAutomated testing APEX Applications
Automated testing APEX ApplicationsRoel Hartman
 
5 Cool Things you can do with HTML5 and APEX
5 Cool Things you can do with HTML5 and APEX5 Cool Things you can do with HTML5 and APEX
5 Cool Things you can do with HTML5 and APEXRoel Hartman
 
Striving for Perfection: The Ultimate APEX Application Architecture
Striving for Perfection: The Ultimate APEX Application ArchitectureStriving for Perfection: The Ultimate APEX Application Architecture
Striving for Perfection: The Ultimate APEX Application ArchitectureRoel Hartman
 
XFILES, the APEX 4 version - The truth is in there
XFILES, the APEX 4 version - The truth is in thereXFILES, the APEX 4 version - The truth is in there
XFILES, the APEX 4 version - The truth is in thereRoel Hartman
 
Done in 60 seconds - Creating Web 2.0 applications made easy
Done in 60 seconds - Creating Web 2.0 applications made easyDone in 60 seconds - Creating Web 2.0 applications made easy
Done in 60 seconds - Creating Web 2.0 applications made easyRoel Hartman
 
Tales from a Parallel Universe: Using Oracle 11gR2's Edition Based Redefiniti...
Tales from a Parallel Universe: Using Oracle 11gR2's Edition Based Redefiniti...Tales from a Parallel Universe: Using Oracle 11gR2's Edition Based Redefiniti...
Tales from a Parallel Universe: Using Oracle 11gR2's Edition Based Redefiniti...Roel Hartman
 
Creating sub zero dashboard plugin for apex with google
Creating sub zero dashboard plugin for apex with googleCreating sub zero dashboard plugin for apex with google
Creating sub zero dashboard plugin for apex with googleRoel Hartman
 
Integration of APEX and Oracle Forms
Integration of APEX and Oracle FormsIntegration of APEX and Oracle Forms
Integration of APEX and Oracle FormsRoel Hartman
 
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Roel Hartman
 

More from Roel Hartman (19)

Wizard of ORDS
Wizard of ORDSWizard of ORDS
Wizard of ORDS
 
APEX Bad Practices
APEX Bad PracticesAPEX Bad Practices
APEX Bad Practices
 
Docker for Dummies
Docker for DummiesDocker for Dummies
Docker for Dummies
 
A deep dive into APEX JET charts
A deep dive into APEX JET chartsA deep dive into APEX JET charts
A deep dive into APEX JET charts
 
Mastering universal theme
Mastering universal themeMastering universal theme
Mastering universal theme
 
APEX Developers : Do More With LESS !
APEX Developers : Do More With LESS !APEX Developers : Do More With LESS !
APEX Developers : Do More With LESS !
 
Ten Tiny Things To Try Today - Hidden APEX5 Gems Revealed
Ten Tiny Things To Try Today - Hidden APEX5 Gems RevealedTen Tiny Things To Try Today - Hidden APEX5 Gems Revealed
Ten Tiny Things To Try Today - Hidden APEX5 Gems Revealed
 
Best of both worlds: Create hybrid mobile applications with Oracle Applicatio...
Best of both worlds: Create hybrid mobile applications with Oracle Applicatio...Best of both worlds: Create hybrid mobile applications with Oracle Applicatio...
Best of both worlds: Create hybrid mobile applications with Oracle Applicatio...
 
APEX printing with BI Publisher
APEX printing with BI PublisherAPEX printing with BI Publisher
APEX printing with BI Publisher
 
Troubleshooting APEX Performance Issues
Troubleshooting APEX Performance IssuesTroubleshooting APEX Performance Issues
Troubleshooting APEX Performance Issues
 
Automated testing APEX Applications
Automated testing APEX ApplicationsAutomated testing APEX Applications
Automated testing APEX Applications
 
5 Cool Things you can do with HTML5 and APEX
5 Cool Things you can do with HTML5 and APEX5 Cool Things you can do with HTML5 and APEX
5 Cool Things you can do with HTML5 and APEX
 
Striving for Perfection: The Ultimate APEX Application Architecture
Striving for Perfection: The Ultimate APEX Application ArchitectureStriving for Perfection: The Ultimate APEX Application Architecture
Striving for Perfection: The Ultimate APEX Application Architecture
 
XFILES, the APEX 4 version - The truth is in there
XFILES, the APEX 4 version - The truth is in thereXFILES, the APEX 4 version - The truth is in there
XFILES, the APEX 4 version - The truth is in there
 
Done in 60 seconds - Creating Web 2.0 applications made easy
Done in 60 seconds - Creating Web 2.0 applications made easyDone in 60 seconds - Creating Web 2.0 applications made easy
Done in 60 seconds - Creating Web 2.0 applications made easy
 
Tales from a Parallel Universe: Using Oracle 11gR2's Edition Based Redefiniti...
Tales from a Parallel Universe: Using Oracle 11gR2's Edition Based Redefiniti...Tales from a Parallel Universe: Using Oracle 11gR2's Edition Based Redefiniti...
Tales from a Parallel Universe: Using Oracle 11gR2's Edition Based Redefiniti...
 
Creating sub zero dashboard plugin for apex with google
Creating sub zero dashboard plugin for apex with googleCreating sub zero dashboard plugin for apex with google
Creating sub zero dashboard plugin for apex with google
 
Integration of APEX and Oracle Forms
Integration of APEX and Oracle FormsIntegration of APEX and Oracle Forms
Integration of APEX and Oracle Forms
 
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
 

Recently uploaded

Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
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
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 

Recently uploaded (20)

Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
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
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 

Tweaking the interactive grid

  • 1. 1 Top ten tweaks for the Interactive Grid Roel Hartman APEX Consulting @RoelH
  • 2. X
  • 3. 3
  • 4.
  • 5. Copyright © 2017 APEX Consulting Interactive Grid The “basics” 5
  • 6. 6
  • 7. 7
  • 8. Copyright © 2017 APEX Consulting 1. Tweak the Toolbar Remove “Finder Drop Down” 8
  • 12. JavaScript Configuration 12 function( options ) { options.toolbar = false; return options; }
  • 13. “toolbar” is just one of the options 13 apex.region("emp").widget().interactiveGrid("option").config
  • 15. Disable “Finder Drop Down” 15 function( options ) { var $ = apex.jQuery, toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(), toolbarGroup = toolbarData.toolbarFind("search"); // toolbarGroup points to "search" object, containing “controls” array // remove first element from that array toolbarGroup.controls.shift(); // pass back the modified object options.toolbarData = toolbarData; return options; }
  • 16. Copyright © 2017 APEX Consulting 2. Tweak the Toolbar Add a button on the Search Bar 16
  • 17. Add a button on the Search Bar - IR 17
  • 18. Add a button on the Search Bar - IG 18 function( options ) { var $ = apex.jQuery, toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(), toolbarGroup = toolbarData.toolbarFind("actions3"); // toolbarGroup is "actions3" object, with the "Add Row" button // add an element to that array toolbarGroup.controls.push({ type : "BUTTON" , action : "my-custom-action" , label : "My Button" , icon : "fa fa-user-secret" , iconBeforeLabel : true }); // pass back the modified object options.toolbarData = toolbarData; return options; }
  • 19. Add a button on the Search Bar - IG (alt.) 19 function( options ) { var $ = apex.jQuery, toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(), toolbarGroup = { id : “myToolBarGroup" , controls : [{ type : "BUTTON" , action : "my-custom-action" , label : "My Button" , icon : "fa fa-user-secret" , iconBeforeLabel : true }] }; // toolbarGroup is my new created object toolbarData.push( toolbarGroup ); // pass back the modified object options.toolbarData = toolbarData; return options; }
  • 20. Copyright © 2017 APEX Consulting 3. Tweak the Action Menu Remove default functions 20
  • 23. Remove default Actions 23 function( options ) { options.initActions = function( actions ){ actions.hide("show-columns-dialog"); actions.hide("show-control-break-dialog"); actions.hide("show-aggregate-dialog"); actions.hide("show-help-dialog"); actions.hide("show-sort-dialog"); actions.hide("refresh"); // actions.hide("show-filter-dialog"); // actions.hide("show-flashback-dialog"); // actions.hide("show-highlight-dialog"); actions.disable("chart-view"); } return options; }
  • 24. Remove default Actions (features) 24 function( options ) { // Disable Filter / Flashback as "features" options.features = options.features || {}; options.features.filter = false; options.features.flashback = false; return options; }
  • 25. Remove default Actions (Grid View features) 25 function( options ) { // Disable Highlight "feature" of the Grid View options.views = options.views || {}; options.views.grid = options.views.grid || {}; options.views.grid.features = options.views.grid.features || {}; options.views.grid.features.highlight = false; return options; }
  • 26. Copyright © 2017 APEX Consulting 4. Tweak the Action Menu Add an Action to a Toolbar Button 26
  • 27. Add a button on the Search Bar - IG 27 function( options ) { var $ = apex.jQuery, toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(), toolbarGroup = { id : “myToolBarGroup" , controls : [{ type : "BUTTON" , action : "my-custom-action" , label : "My Button" , icon : "fa fa-user-secret" , iconBeforeLabel : true }] }; // toolbarGroup is my new created object toolbarData.push( toolbarGroup ); // pass back the modified object options.toolbarData = toolbarData; return options; }
  • 28. Link Action to Button 28 function( options ) { … options.initActions = function( actions ){ actions.add( { name : "my-custom-action" , action : function( event, element ) { apex.event.trigger( element, "my-custom-action" ); } }); } return options; }
  • 29. Copyright © 2017 APEX Consulting 5. Modify Column Headings Remove sorting, hiding, aggregate etc. 29
  • 30. Remove column header features 30
  • 31. Remove column header features - region level 31 function( options ){ options.views = options.views || {}; options.views.grid = options.views.grid || {}; options.views.grid.features = options.views.grid.features||{}; options.views.grid.features.reorderColumns = false; options.views.grid.features.resizeColumns = false; options.views.grid.features.sort = false; return options; }
  • 32. Where to find all these options? 32
  • 33. Remove column header features - column level 33 function( options ){ options.features = options.features || {}; options.features.canHide = false; options.features.controlBreak = false; options.features.aggregate = false; //options.features.freeze = false; return options; }
  • 34. Reuse settings • Create JavaScript function (in a - static - file) 34 function myColumnSettings( options ){ options.features = options.features || {}; options.features.canHide = false; options.features.controlBreak = false; options.features.aggregate = false; return options; } • Call the function myColumnSettings
  • 35. Reuse settings and override 35 function( options ){ options = myColumnSettings( options ); options.features.aggregate = true; return options; } • Call the function
  • 36. Copyright © 2017 APEX Consulting 6. Modify Column Headings Rotate column heading 36
  • 38. Rotate column headings 38 .a-GV-header { height: 120px; } .a-GV-w-hdr .a-GV-headerLabel { transform: translateX(25%) rotate(45deg); display: inline-block; }
  • 39. Copyright © 2017 APEX Consulting 7. Customise tooltips Show “hidden” columns as a tooltip 39
  • 41. Customise tooltip 41 function( options ){ options.defaultGridViewOptions = { tooltip: { content: function(callback, model, recordMeta, colMeta, columnDef ) { return model.getValue( recordMeta.record, "JOB" ) + "<br/>$" + model.getValue( recordMeta.record, "SAL" ); } } } return options; }
  • 42. Copyright © 2017 APEX Consulting 8. Modify row menu Delete and add entries 42
  • 44. Modify row menu 44 function(options) { options.initActions = function( actions ) { actions.remove("single-row-view"); actions.remove("row-add-row"); actions.remove("row-duplicate"); actions.remove("row-delete"); actions.remove("row-refresh"); actions.remove("row-revert"); actions.remove("selection-duplicate"); actions.remove("selection-delete"); actions.remove("selection-refresh"); actions.remove("selection-revert"); } return options; }
  • 45. Modify row menu 45 apex.region("emp").widget() .interactiveGrid("getViews").grid .rowActionMenu$.menu("option") .items.push({type:"action", label:"Hi", icon : "fa fa-hand-paper-o", action: function(){alert("Hi y'all")}}); apex.region("emp").widget() .interactiveGrid("getViews").grid .selActionMenu$.menu("option") .items.push({type:"action", label:"Hi", icon : "fa fa-thumbs-up", action: function(){alert("Good work by all selected employees")}});
  • 48. Copyright © 2017 APEX Consulting 9. Refresh row on change without a full region refresh 48
  • 49. Refresh (just the) row on change 49
  • 50. Refresh (just the) row on change 50
  • 51. Refresh (just the) row on change 51
  • 52. Refresh (just the) row on change 52
  • 53. Copyright © 2017 APEX Consulting 10. Refresh upon delete without a full region refresh 53
  • 56. Refresh upon delete 56 var records, recordId, iNode, currentViewImpl = apex.region('emp').widget().interactiveGrid("getViews", "grid"); records = currentViewImpl.getSelectedRecords(); currentViewImpl.model.fetchRecords(records, function(err){ if (err) { apex.message.clearErrors(); recordId = currentViewImpl.model.getRecordId(records[0]); iNode = currentViewImpl.model.getRecordMetadata(recordId); iNode.canDelete = true; currentViewImpl.model.setOption('editable', true); currentViewImpl.model.deleteRecords(records); currentViewImpl.model.clearChanges(); } });
  • 57. Top ten 1. Remove objects from the standard Toolbar 2. Add objects to the standard Toolbar 3. Remove / disable standard Actions 4. Add your own Actions 5. Modify column functions 6. Modify column headings 7. Customise tooltips 8. Modify row level menu 9. Refresh (just the) row on change 10. Remove (just the) row on delete 57
  • 58. Links to resources • http://hardlikesoftware.com/weblog/2016/06/08/interactive-grid-under-the-hood/ • http://hardlikesoftware.com/weblog/2017/01/06/interactive-grid-column-widths/ • http://hardlikesoftware.com/weblog/2017/01/18/how-to-hack-apex-interactive-grid-part-1/ • http://hardlikesoftware.com/weblog/2017/01/24/how-to-hack-apex-interactive-grid-part-2/ • http://hardlikesoftware.com/weblog/2017/02/20/how-to-hack-apex-interactive-grid-part-3/ • http://hardlikesoftware.com/weblog/2017/03/31/how-to-hack-apex-interactive-grid-part-4/ • http://hardlikesoftware.com/weblog/2017/07/10/apex-interactive-grid-cookbook/ • https://github.com/mgoricki/orclapex-ig-cheat-sheet • https://github.com/Dani3lSun/apex-plugin-extend_ig_menu 58
  • 59. Copyright © 2017 APEX Consulting Q& Aroel@apexconsulting.nl http://www.apexconsulting.nl @RoelH 59