SlideShare a Scribd company logo
Oracle Application Express
as add-on for Google Apps
with Twitter Bootstrap
1
Agenda
19:00 Who is…?
19:05 Introduction Google Apps
19:10 Business case & demo Gbilling
19:25 Introduction to Twitter Bootstrap
19:40 Some examples how to integrate TB in Apex
19:55 Mini-break
20:05 More examples how to integrate TB in Apex
20:15 Working with Google authentication (oauth 2.0)
20:35 Google API’s
20:50 Announcement
20:55 Quiz
2
Who is smart4apex?!
• Just some geeks passionate about Apex, having fun
together
• Sharing experience and knowledge
• Explore new techniques and opportunities
• Building state of the art (Apex) solutions for our
customers
3
Who is smart4apex?!
• Company 2.0;
– Co-operation of professionals
• Guild
– Rules about work-ethics
– Minimum experience
• Masters
– Commission of entrance
– Commission of dispute
– Form the corporation
• Friends
4
Who are we?
Sergei Martens
• Oracle developer from 1998
• OCP in 1999
• Database version 7
• Started as classic developer
(Forms & Designer)
• Now Apex developer
• Speaker Dutch Apex congress
2012 (Ext JS) & 2013 (mobile)
5
Warning
During this presentation we will bring the user interface of
our Apex application “to the next level”.
To make this happen we make use of HTML, CSS and
JavaScript.
This is inevitable for creating a modern user interface.
6
Google Apps
7
Google Apps marketplace
8
Business Case
1. Specialist in information management
2. Interested in the opportunities of cloud technology and the use of it
in a business environment.
Task
Based on the appointments in our Google
Calendars, we want to:
1. automatically generate invoices
2. send the invoices digitally (email) to our customers
Next we want to keep track of payments, etc.
9
Architecture
Domain &
user
information
Drive
Calendar
Jasper reports
server
Gbilling
Accounts &
projects
Invoicing
Local data
Google Apps
GoogleAPI
10
Data structure
Users
Users-
sessions
Companies
Projects
Clients
Invoices
Invoice itemsAgenda items
11
Demo Gbilling
Demo
12
Subjects on user interface
Commercial
environmentShorter lifetime of software
Trends
Less = more
Reference of users
Bigger = better
HTML5 + CSS3
AJAX
13
Trends
• Simple design
• Just a few items
• Large items
• Dynamic regions
• Info graphics
• Dashboards
• Long pages
• Complex design
• Many items
• Small items
• Tabs / Report -> Detail
• Text
• Reports / tables
• Short pages
14
wrong user interface
15
Example
16
Introduction Twitter Bootstrap
17
Bootstrap in a nutshell
Wikipedia
1. Bootstrap is a free collection of tools for creating websites and
web applications.
2. It has been the most popular project in GitHub and has been used
by NASA and MSNBC among others.
3. Bootstrap was developed by Mark Otto and Jacob Thornton at
Twitter as a framework to encourage consistency across internal
tools
4. Since version 2.0 it also supports responsive design
18
Bootstrap examples I - template
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap Template</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<link href="/css/bootstrap.min.css" rel="stylesheet" media="screen">
</head>
<body>
<h1>Hello, world!</h1>
<script src="/js/jquery.js"></script>
<script src="/js/bootstrap.min.js"></script>
</body>
</html>
19
Bootstrap examples I - grid
• 12 column layout
• 940px width
• Works with CSS-classes:
• row; like <tr> in html-table
• span#; width of the column
• offset#; move # columns to the right
• fluid; uses percentages in stead of fixed width
• container; centre on page
20
Bootstrap examples II - Icons
• Icons available through classes
<i class="icon-search"></i>
• 140 icons available (glyphicons)
– from “icon-glass” to “icon-fullscreen”
• Alternative: font-awesome
– http://fortawesome.github.io/Font-Awesome/icons/
– 361 icons
– Compatible with the TB glyphicons
– Sizeable (they use a font instead of an image)
• CSS adjustable (colour, underline, alignment etc.)
<i class="icon-search"></i>
21
Who are we?
Richard Martens
• Oracle since 12 years (Oracle 8i)
– Large Multilingual websites
– RAD applications
• Core Technologies
– Oracle PL/SQL
– Oracle Apex
– HTML5, CSS3, JavaScript, XML, XSLT
• Other technologies
– PHP, ASP(.net)
– Windows and Linux server platform
• RIMA on Oracle Forums
22
Bootstrap examples II – Modal
• Modal
– Built-in dialog (popup)
– Usage
• First create the modal.
– Container div
» modal-header
» modal-body
» modal-footer
• To open modal
– Through data attributes
» <button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
– Through JavaScript
» $('#myModal').modal('show');
• Modal implemented as a region template.
• Opening of modal through data-attributes on a button
– Sometimes JavaScript is used for specific reasons.
23
<div id="myModal" class="modal hide fade" tabindex="-1“
role="dialog" aria-labelledby="myModalLabel"
aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal“
aria-hidden="true"> </button>
<h3 id="myModalLabel">Modal header</h3>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal"
aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
Bootstrap examples II – Date-picker
• Date-picker
• Using Bootstrap plugin (http://www.eyecon.ro/bootstrap-datepicker/)
• Combination of text-item and button
• Usage
– Create input element of type text and ad the “date-picker”
class
– Page template will transform all these elements using
jQuery and CSS
24
<div class="input-append">
<input type="text" class="text_field input-medium date-picker" value="20-08-2013">
<button class="btn icon-calendar btn-date-picker" type="button"></button>
</div>
Bootstrap examples II – Parsley
• Is not a part of bootstrap
– http://parsleyjs.org/
• JavaScript library for client side form validation
• Allows element as well as form validation
• Element validation implemented in the S4A Bootstrap theme
– without using plugins
– Available for all page templates
– By use of element attributes:
• parsley=“blur”
• parsley=“false”
– Further attributes
according to parsley docs
• required = “required”
• data-notblank = “true”
• data-minlength = “6”
• data-maxlength = “8”
• data-type=“email”
(“url”, “digits”, “number”, “date-iso”)
25
Bootstrap examples II – Parsley
– Template JavaScript to position the error message correctly
for Bootstrap
26
<div class="control-group error">
<label class="control-label“ for="inputError">
Input with error</label>
<div class="controls">
<input type="text" id="inputError">
<span class="help-inline">
Please correct the error</span>
</div>
</div>
Google API – Authentication
27
Server
Application
Google oauth2
server
Google API
endpoint
Token request
Code
API call with token
API response (json, xml)
User login and consent
Exchange code for token
Token
Step 1
Step 2
Step 3
Google API – Authentication I
• Utilizes package and tables on
database
– Table contains session information
• Page 101 (standard login page)
– Remove token from table for “this” session
– Start procedure
• Procedure redirects to:
https://accounts.google.com/o/oauth2/
• Google takes over:
– Shows login information (shows the grants that the app is requesting)
– User clicks okay
– Google redirects to the URL specified in API console (which is page 102)
28
Server
Application
Google
oauth2
server
Token request
Code
User login and consent
Google API – Authentication II
• Page 102 (copied from 101)
– Contains item to store
query string
– Dynamic action to process query string
• Copy query string into item (using JavaScript)
• Start procedure (using pl/sql block)
– Request token
– Do first API call to:
» Get user info (id, email, name)
– Return user info
– Put user-info into application items
• Submit the page
– Login process
• Prepare redirect (start or settings) (new user needs to set certain settings)
• Set session language
• Start standard apex login procedure
– User is redirected to start-screen or settings-page
29
Server Application
Google oauth2
server
Exchange code for token
Code
Google API – making a request
• Three options:
– Using apex built-in restful client
• Advantages:
– Easy to implement
– Results go in a apex-collection
• Disadvantages
– Limited use from PL/SQL
– Limited debugging possibilities
– Making your own request in
PL/SQL
• Advantages
– Full debugging possibilities
– Full access from PL/SQL
• Disadvantages
– More difficult to implement
– Using apex_web_service package
(not covered)
• Advantages
– like making own request
– Easier to implement than own request,
more difficult than restful client
• Disadvantages
– Less control than own request
– Greatest lack in oracle apex is built
in JSON parsing / extracting
30
Google API – the built-in restful client
• Create web-service reference in
“Shared Components”
• Create process, report or form utilising the reference
– Process: store result in collection or items
– Report: will run on a temp collection
– Form: allows to post data
31
Google API – making your own request
• Relies on procedures and functions (within packages)
• Gives full freedom in what to do
• You must take errors into account
• A request consists of:
– URL (the question asked, aka: “endpoint”)
– Header (for setting security and other parameters)
• Authorization: Bearer {token}
• Content-Length: {length_of_body}
– Body (sometimes optional, used for POST, PUT and PATCH
requests, contains the content sent)
• Can contain json, xml or other structures, depending on webservice
32
Google API - getUserInfo
• RESTful webservice
• Response in json format
• Endpoint:
https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token={token}
• Response is json:
{ "id": "111253075910917653317"
, "email": r.martens@smart4apex.nl
, "verified_email": true
, "name": "Richard Martens"
, "given_name": "Richard"
, "family_name": "Martens"
, "link": https://plus.google.com/111253075910917653317
, "picture": https://lh6.googleusercontent.com/-Dz..NM/photo.jpg
, "gender": "male"
, "locale": "nl"
, "hd": "smart4apex.nl"
}
33
Announcement
34
Quiz
35

More Related Content

What's hot

Brand Launch PowerPoint Presentation Slides
Brand Launch PowerPoint Presentation SlidesBrand Launch PowerPoint Presentation Slides
Brand Launch PowerPoint Presentation Slides
SlideTeam
 
HITD 201: Design Thinking - Lecture4 - Ideation
HITD 201: Design Thinking - Lecture4 - IdeationHITD 201: Design Thinking - Lecture4 - Ideation
HITD 201: Design Thinking - Lecture4 - Ideation
Mark Billinghurst
 
The Best Pitch Decks
The Best Pitch DecksThe Best Pitch Decks
The Best Pitch Decks
David Ehrenberg
 
Cluno - NOAH19 Berlin
Cluno - NOAH19 BerlinCluno - NOAH19 Berlin
Cluno - NOAH19 Berlin
NOAH Advisors
 
Investor Pitch Deck For A Start Up PowerPoint Presentation Slides
Investor Pitch Deck For A Start Up PowerPoint Presentation Slides Investor Pitch Deck For A Start Up PowerPoint Presentation Slides
Investor Pitch Deck For A Start Up PowerPoint Presentation Slides
SlideTeam
 
Determining cost structure & revenue streams
Determining cost structure & revenue streamsDetermining cost structure & revenue streams
Determining cost structure & revenue streams
gistinitiative
 
Product Roll Out Strategy Proposal PowerPoint Presentation Slides
Product Roll Out Strategy Proposal PowerPoint Presentation SlidesProduct Roll Out Strategy Proposal PowerPoint Presentation Slides
Product Roll Out Strategy Proposal PowerPoint Presentation Slides
SlideTeam
 
Lolo pitch deck series c
Lolo pitch deck series cLolo pitch deck series c
Lolo pitch deck series c
Pitch Decks
 
Lizol_Clean_Sweep.pptx
Lizol_Clean_Sweep.pptxLizol_Clean_Sweep.pptx
Lizol_Clean_Sweep.pptx
63D026MdGolamMuktadi
 
Investor pitch deck template
Investor pitch deck templateInvestor pitch deck template
Investor pitch deck template
Vasu Mullapudi
 
Business Development And Operational Plan Powerpoint Presentation Slides
Business Development And Operational Plan Powerpoint Presentation SlidesBusiness Development And Operational Plan Powerpoint Presentation Slides
Business Development And Operational Plan Powerpoint Presentation Slides
SlideTeam
 
Cannabis Investor Pitch deck template
Cannabis Investor Pitch deck templateCannabis Investor Pitch deck template
Cannabis Investor Pitch deck template
CannaBusinessPlans
 
Home Sellers Seminar - 4/2/11
Home Sellers Seminar - 4/2/11Home Sellers Seminar - 4/2/11
Home Sellers Seminar - 4/2/11
Susy Hurlbert
 
Tafari Capital Investor Pitch Deck
Tafari Capital Investor Pitch DeckTafari Capital Investor Pitch Deck
Tafari Capital Investor Pitch Deck
Llewellyn Morkel
 
Your Business Pitch
Your Business PitchYour Business Pitch
Your Business Pitch
Codi Spodnik
 
Strategy Roles and Titles
Strategy Roles and TitlesStrategy Roles and Titles
Strategy Roles and Titles
Maggie Windsor Gross
 
Example Investor Presentation PowerPoint Presentation Slides
Example Investor Presentation PowerPoint Presentation SlidesExample Investor Presentation PowerPoint Presentation Slides
Example Investor Presentation PowerPoint Presentation Slides
SlideTeam
 
F88 pitch deck
F88 pitch deckF88 pitch deck
F88 pitch deck
Tech in Asia
 
Sample Pitch Deck for Your Fund
Sample Pitch Deck for Your FundSample Pitch Deck for Your Fund
Sample Pitch Deck for Your Fund
Kaego Ogbechie Rust
 
Startup Strategy Framework Powerpoint Presentation Slides
Startup Strategy Framework Powerpoint Presentation SlidesStartup Strategy Framework Powerpoint Presentation Slides
Startup Strategy Framework Powerpoint Presentation Slides
SlideTeam
 

What's hot (20)

Brand Launch PowerPoint Presentation Slides
Brand Launch PowerPoint Presentation SlidesBrand Launch PowerPoint Presentation Slides
Brand Launch PowerPoint Presentation Slides
 
HITD 201: Design Thinking - Lecture4 - Ideation
HITD 201: Design Thinking - Lecture4 - IdeationHITD 201: Design Thinking - Lecture4 - Ideation
HITD 201: Design Thinking - Lecture4 - Ideation
 
The Best Pitch Decks
The Best Pitch DecksThe Best Pitch Decks
The Best Pitch Decks
 
Cluno - NOAH19 Berlin
Cluno - NOAH19 BerlinCluno - NOAH19 Berlin
Cluno - NOAH19 Berlin
 
Investor Pitch Deck For A Start Up PowerPoint Presentation Slides
Investor Pitch Deck For A Start Up PowerPoint Presentation Slides Investor Pitch Deck For A Start Up PowerPoint Presentation Slides
Investor Pitch Deck For A Start Up PowerPoint Presentation Slides
 
Determining cost structure & revenue streams
Determining cost structure & revenue streamsDetermining cost structure & revenue streams
Determining cost structure & revenue streams
 
Product Roll Out Strategy Proposal PowerPoint Presentation Slides
Product Roll Out Strategy Proposal PowerPoint Presentation SlidesProduct Roll Out Strategy Proposal PowerPoint Presentation Slides
Product Roll Out Strategy Proposal PowerPoint Presentation Slides
 
Lolo pitch deck series c
Lolo pitch deck series cLolo pitch deck series c
Lolo pitch deck series c
 
Lizol_Clean_Sweep.pptx
Lizol_Clean_Sweep.pptxLizol_Clean_Sweep.pptx
Lizol_Clean_Sweep.pptx
 
Investor pitch deck template
Investor pitch deck templateInvestor pitch deck template
Investor pitch deck template
 
Business Development And Operational Plan Powerpoint Presentation Slides
Business Development And Operational Plan Powerpoint Presentation SlidesBusiness Development And Operational Plan Powerpoint Presentation Slides
Business Development And Operational Plan Powerpoint Presentation Slides
 
Cannabis Investor Pitch deck template
Cannabis Investor Pitch deck templateCannabis Investor Pitch deck template
Cannabis Investor Pitch deck template
 
Home Sellers Seminar - 4/2/11
Home Sellers Seminar - 4/2/11Home Sellers Seminar - 4/2/11
Home Sellers Seminar - 4/2/11
 
Tafari Capital Investor Pitch Deck
Tafari Capital Investor Pitch DeckTafari Capital Investor Pitch Deck
Tafari Capital Investor Pitch Deck
 
Your Business Pitch
Your Business PitchYour Business Pitch
Your Business Pitch
 
Strategy Roles and Titles
Strategy Roles and TitlesStrategy Roles and Titles
Strategy Roles and Titles
 
Example Investor Presentation PowerPoint Presentation Slides
Example Investor Presentation PowerPoint Presentation SlidesExample Investor Presentation PowerPoint Presentation Slides
Example Investor Presentation PowerPoint Presentation Slides
 
F88 pitch deck
F88 pitch deckF88 pitch deck
F88 pitch deck
 
Sample Pitch Deck for Your Fund
Sample Pitch Deck for Your FundSample Pitch Deck for Your Fund
Sample Pitch Deck for Your Fund
 
Startup Strategy Framework Powerpoint Presentation Slides
Startup Strategy Framework Powerpoint Presentation SlidesStartup Strategy Framework Powerpoint Presentation Slides
Startup Strategy Framework Powerpoint Presentation Slides
 

Similar to Oracle Application Express as add-on for Google Apps

ow.ppt
ow.pptow.ppt
ow.ppt
ssuser96a63c
 
ow.ppt
ow.pptow.ppt
Ow
OwOw
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
serge luca
 
Plantilla oracle
Plantilla oraclePlantilla oracle
Plantilla oracle
Uriel Barrales Garrido
 
The SharePoint and jQuery Guide by Mark Rackley - SPTechCon
The SharePoint and jQuery Guide by Mark Rackley - SPTechConThe SharePoint and jQuery Guide by Mark Rackley - SPTechCon
The SharePoint and jQuery Guide by Mark Rackley - SPTechCon
SPTechCon
 
The SharePoint & jQuery Guide
The SharePoint & jQuery GuideThe SharePoint & jQuery Guide
The SharePoint & jQuery Guide
Mark Rackley
 
Creating a Documentation Portal
Creating a Documentation PortalCreating a Documentation Portal
Creating a Documentation Portal
Steve Anderson
 
Microsoft Flow best practices European Collaboration Summit 2018
Microsoft Flow best practices European Collaboration Summit 2018Microsoft Flow best practices European Collaboration Summit 2018
Microsoft Flow best practices European Collaboration Summit 2018
serge luca
 
[Luca/Van Campenhoudt] Microsoft Flow Beyone the Limits: Tips, Pitfalls, Patt...
[Luca/Van Campenhoudt] Microsoft Flow Beyone the Limits: Tips, Pitfalls, Patt...[Luca/Van Campenhoudt] Microsoft Flow Beyone the Limits: Tips, Pitfalls, Patt...
[Luca/Van Campenhoudt] Microsoft Flow Beyone the Limits: Tips, Pitfalls, Patt...
European Collaboration Summit
 
SharePoint Development
SharePoint DevelopmentSharePoint Development
SharePoint Development
Malin De Silva
 
SharePoint Connections Conference Amsterdam - Pitfalls and success factors of...
SharePoint Connections Conference Amsterdam - Pitfalls and success factors of...SharePoint Connections Conference Amsterdam - Pitfalls and success factors of...
SharePoint Connections Conference Amsterdam - Pitfalls and success factors of...
Wilco Turnhout
 
01_Team_03_CS_591_Project
01_Team_03_CS_591_Project01_Team_03_CS_591_Project
01_Team_03_CS_591_Project
harsh mehta
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to Microservices
Ad van der Veer
 
Rajnish singh(presentation on oracle )
Rajnish singh(presentation on  oracle )Rajnish singh(presentation on  oracle )
Rajnish singh(presentation on oracle )
Rajput Rajnish
 
SharePoint & jQuery Guide - SPSTC 5/18/2013
SharePoint & jQuery Guide - SPSTC 5/18/2013 SharePoint & jQuery Guide - SPSTC 5/18/2013
SharePoint & jQuery Guide - SPSTC 5/18/2013
Mark Rackley
 
Automate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operationAutomate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operation
Nelson Calero
 
Powering a Startup with Apache Spark with Kevin Kim
Powering a Startup with Apache Spark with Kevin KimPowering a Startup with Apache Spark with Kevin Kim
Powering a Startup with Apache Spark with Kevin Kim
Spark Summit
 
(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide
Mark Rackley
 
TulsaTechFest - Maximize SharePoint UX with free jQuery libraries
TulsaTechFest - Maximize SharePoint UX with free jQuery librariesTulsaTechFest - Maximize SharePoint UX with free jQuery libraries
TulsaTechFest - Maximize SharePoint UX with free jQuery libraries
Mark Rackley
 

Similar to Oracle Application Express as add-on for Google Apps (20)

ow.ppt
ow.pptow.ppt
ow.ppt
 
ow.ppt
ow.pptow.ppt
ow.ppt
 
Ow
OwOw
Ow
 
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
 
Plantilla oracle
Plantilla oraclePlantilla oracle
Plantilla oracle
 
The SharePoint and jQuery Guide by Mark Rackley - SPTechCon
The SharePoint and jQuery Guide by Mark Rackley - SPTechConThe SharePoint and jQuery Guide by Mark Rackley - SPTechCon
The SharePoint and jQuery Guide by Mark Rackley - SPTechCon
 
The SharePoint & jQuery Guide
The SharePoint & jQuery GuideThe SharePoint & jQuery Guide
The SharePoint & jQuery Guide
 
Creating a Documentation Portal
Creating a Documentation PortalCreating a Documentation Portal
Creating a Documentation Portal
 
Microsoft Flow best practices European Collaboration Summit 2018
Microsoft Flow best practices European Collaboration Summit 2018Microsoft Flow best practices European Collaboration Summit 2018
Microsoft Flow best practices European Collaboration Summit 2018
 
[Luca/Van Campenhoudt] Microsoft Flow Beyone the Limits: Tips, Pitfalls, Patt...
[Luca/Van Campenhoudt] Microsoft Flow Beyone the Limits: Tips, Pitfalls, Patt...[Luca/Van Campenhoudt] Microsoft Flow Beyone the Limits: Tips, Pitfalls, Patt...
[Luca/Van Campenhoudt] Microsoft Flow Beyone the Limits: Tips, Pitfalls, Patt...
 
SharePoint Development
SharePoint DevelopmentSharePoint Development
SharePoint Development
 
SharePoint Connections Conference Amsterdam - Pitfalls and success factors of...
SharePoint Connections Conference Amsterdam - Pitfalls and success factors of...SharePoint Connections Conference Amsterdam - Pitfalls and success factors of...
SharePoint Connections Conference Amsterdam - Pitfalls and success factors of...
 
01_Team_03_CS_591_Project
01_Team_03_CS_591_Project01_Team_03_CS_591_Project
01_Team_03_CS_591_Project
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to Microservices
 
Rajnish singh(presentation on oracle )
Rajnish singh(presentation on  oracle )Rajnish singh(presentation on  oracle )
Rajnish singh(presentation on oracle )
 
SharePoint & jQuery Guide - SPSTC 5/18/2013
SharePoint & jQuery Guide - SPSTC 5/18/2013 SharePoint & jQuery Guide - SPSTC 5/18/2013
SharePoint & jQuery Guide - SPSTC 5/18/2013
 
Automate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operationAutomate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operation
 
Powering a Startup with Apache Spark with Kevin Kim
Powering a Startup with Apache Spark with Kevin KimPowering a Startup with Apache Spark with Kevin Kim
Powering a Startup with Apache Spark with Kevin Kim
 
(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide
 
TulsaTechFest - Maximize SharePoint UX with free jQuery libraries
TulsaTechFest - Maximize SharePoint UX with free jQuery librariesTulsaTechFest - Maximize SharePoint UX with free jQuery libraries
TulsaTechFest - Maximize SharePoint UX with free jQuery libraries
 

More from Sergei Martens

Web accessibility for APEX developers
Web accessibility for APEX developersWeb accessibility for APEX developers
Web accessibility for APEX developers
Sergei Martens
 
DOAG 10 UI commendments for APEX developers
DOAG 10 UI commendments for APEX developersDOAG 10 UI commendments for APEX developers
DOAG 10 UI commendments for APEX developers
Sergei Martens
 
Apex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXApex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEX
Sergei Martens
 
The experience from a successful Forms to APEX migration
The experience from a successful Forms to APEX migrationThe experience from a successful Forms to APEX migration
The experience from a successful Forms to APEX migration
Sergei Martens
 
Apex World 2015
Apex World 2015Apex World 2015
Apex World 2015
Sergei Martens
 
Create fancy applications with the new Twitter Bootstrap theme for Apex.
Create fancy applications with the new Twitter Bootstrap theme for Apex.Create fancy applications with the new Twitter Bootstrap theme for Apex.
Create fancy applications with the new Twitter Bootstrap theme for Apex.
Sergei Martens
 
Artikel APEX & Ext JS
Artikel APEX & Ext JS Artikel APEX & Ext JS
Artikel APEX & Ext JS
Sergei Martens
 
Presentatie apex en extjs
Presentatie apex en extjsPresentatie apex en extjs
Presentatie apex en extjs
Sergei Martens
 
SMART4apex company presentation APEX world convention March 25 2014
SMART4apex company presentation APEX world convention March 25 2014SMART4apex company presentation APEX world convention March 25 2014
SMART4apex company presentation APEX world convention March 25 2014
Sergei Martens
 

More from Sergei Martens (9)

Web accessibility for APEX developers
Web accessibility for APEX developersWeb accessibility for APEX developers
Web accessibility for APEX developers
 
DOAG 10 UI commendments for APEX developers
DOAG 10 UI commendments for APEX developersDOAG 10 UI commendments for APEX developers
DOAG 10 UI commendments for APEX developers
 
Apex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXApex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEX
 
The experience from a successful Forms to APEX migration
The experience from a successful Forms to APEX migrationThe experience from a successful Forms to APEX migration
The experience from a successful Forms to APEX migration
 
Apex World 2015
Apex World 2015Apex World 2015
Apex World 2015
 
Create fancy applications with the new Twitter Bootstrap theme for Apex.
Create fancy applications with the new Twitter Bootstrap theme for Apex.Create fancy applications with the new Twitter Bootstrap theme for Apex.
Create fancy applications with the new Twitter Bootstrap theme for Apex.
 
Artikel APEX & Ext JS
Artikel APEX & Ext JS Artikel APEX & Ext JS
Artikel APEX & Ext JS
 
Presentatie apex en extjs
Presentatie apex en extjsPresentatie apex en extjs
Presentatie apex en extjs
 
SMART4apex company presentation APEX world convention March 25 2014
SMART4apex company presentation APEX world convention March 25 2014SMART4apex company presentation APEX world convention March 25 2014
SMART4apex company presentation APEX world convention March 25 2014
 

Recently uploaded

AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Things to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUUThings to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUU
FODUU
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 

Recently uploaded (20)

AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Things to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUUThings to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUU
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 

Oracle Application Express as add-on for Google Apps

  • 1. Oracle Application Express as add-on for Google Apps with Twitter Bootstrap 1
  • 2. Agenda 19:00 Who is…? 19:05 Introduction Google Apps 19:10 Business case & demo Gbilling 19:25 Introduction to Twitter Bootstrap 19:40 Some examples how to integrate TB in Apex 19:55 Mini-break 20:05 More examples how to integrate TB in Apex 20:15 Working with Google authentication (oauth 2.0) 20:35 Google API’s 20:50 Announcement 20:55 Quiz 2
  • 3. Who is smart4apex?! • Just some geeks passionate about Apex, having fun together • Sharing experience and knowledge • Explore new techniques and opportunities • Building state of the art (Apex) solutions for our customers 3
  • 4. Who is smart4apex?! • Company 2.0; – Co-operation of professionals • Guild – Rules about work-ethics – Minimum experience • Masters – Commission of entrance – Commission of dispute – Form the corporation • Friends 4
  • 5. Who are we? Sergei Martens • Oracle developer from 1998 • OCP in 1999 • Database version 7 • Started as classic developer (Forms & Designer) • Now Apex developer • Speaker Dutch Apex congress 2012 (Ext JS) & 2013 (mobile) 5
  • 6. Warning During this presentation we will bring the user interface of our Apex application “to the next level”. To make this happen we make use of HTML, CSS and JavaScript. This is inevitable for creating a modern user interface. 6
  • 9. Business Case 1. Specialist in information management 2. Interested in the opportunities of cloud technology and the use of it in a business environment. Task Based on the appointments in our Google Calendars, we want to: 1. automatically generate invoices 2. send the invoices digitally (email) to our customers Next we want to keep track of payments, etc. 9
  • 13. Subjects on user interface Commercial environmentShorter lifetime of software Trends Less = more Reference of users Bigger = better HTML5 + CSS3 AJAX 13
  • 14. Trends • Simple design • Just a few items • Large items • Dynamic regions • Info graphics • Dashboards • Long pages • Complex design • Many items • Small items • Tabs / Report -> Detail • Text • Reports / tables • Short pages 14
  • 18. Bootstrap in a nutshell Wikipedia 1. Bootstrap is a free collection of tools for creating websites and web applications. 2. It has been the most popular project in GitHub and has been used by NASA and MSNBC among others. 3. Bootstrap was developed by Mark Otto and Jacob Thornton at Twitter as a framework to encourage consistency across internal tools 4. Since version 2.0 it also supports responsive design 18
  • 19. Bootstrap examples I - template <!DOCTYPE html> <html> <head> <title>Bootstrap Template</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Bootstrap --> <link href="/css/bootstrap.min.css" rel="stylesheet" media="screen"> </head> <body> <h1>Hello, world!</h1> <script src="/js/jquery.js"></script> <script src="/js/bootstrap.min.js"></script> </body> </html> 19
  • 20. Bootstrap examples I - grid • 12 column layout • 940px width • Works with CSS-classes: • row; like <tr> in html-table • span#; width of the column • offset#; move # columns to the right • fluid; uses percentages in stead of fixed width • container; centre on page 20
  • 21. Bootstrap examples II - Icons • Icons available through classes <i class="icon-search"></i> • 140 icons available (glyphicons) – from “icon-glass” to “icon-fullscreen” • Alternative: font-awesome – http://fortawesome.github.io/Font-Awesome/icons/ – 361 icons – Compatible with the TB glyphicons – Sizeable (they use a font instead of an image) • CSS adjustable (colour, underline, alignment etc.) <i class="icon-search"></i> 21
  • 22. Who are we? Richard Martens • Oracle since 12 years (Oracle 8i) – Large Multilingual websites – RAD applications • Core Technologies – Oracle PL/SQL – Oracle Apex – HTML5, CSS3, JavaScript, XML, XSLT • Other technologies – PHP, ASP(.net) – Windows and Linux server platform • RIMA on Oracle Forums 22
  • 23. Bootstrap examples II – Modal • Modal – Built-in dialog (popup) – Usage • First create the modal. – Container div » modal-header » modal-body » modal-footer • To open modal – Through data attributes » <button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button> – Through JavaScript » $('#myModal').modal('show'); • Modal implemented as a region template. • Opening of modal through data-attributes on a button – Sometimes JavaScript is used for specific reasons. 23 <div id="myModal" class="modal hide fade" tabindex="-1“ role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal“ aria-hidden="true"> </button> <h3 id="myModalLabel">Modal header</h3> </div> <div class="modal-body"> <p>One fine body…</p> </div> <div class="modal-footer"> <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> <button class="btn btn-primary">Save changes</button> </div> </div>
  • 24. Bootstrap examples II – Date-picker • Date-picker • Using Bootstrap plugin (http://www.eyecon.ro/bootstrap-datepicker/) • Combination of text-item and button • Usage – Create input element of type text and ad the “date-picker” class – Page template will transform all these elements using jQuery and CSS 24 <div class="input-append"> <input type="text" class="text_field input-medium date-picker" value="20-08-2013"> <button class="btn icon-calendar btn-date-picker" type="button"></button> </div>
  • 25. Bootstrap examples II – Parsley • Is not a part of bootstrap – http://parsleyjs.org/ • JavaScript library for client side form validation • Allows element as well as form validation • Element validation implemented in the S4A Bootstrap theme – without using plugins – Available for all page templates – By use of element attributes: • parsley=“blur” • parsley=“false” – Further attributes according to parsley docs • required = “required” • data-notblank = “true” • data-minlength = “6” • data-maxlength = “8” • data-type=“email” (“url”, “digits”, “number”, “date-iso”) 25
  • 26. Bootstrap examples II – Parsley – Template JavaScript to position the error message correctly for Bootstrap 26 <div class="control-group error"> <label class="control-label“ for="inputError"> Input with error</label> <div class="controls"> <input type="text" id="inputError"> <span class="help-inline"> Please correct the error</span> </div> </div>
  • 27. Google API – Authentication 27 Server Application Google oauth2 server Google API endpoint Token request Code API call with token API response (json, xml) User login and consent Exchange code for token Token Step 1 Step 2 Step 3
  • 28. Google API – Authentication I • Utilizes package and tables on database – Table contains session information • Page 101 (standard login page) – Remove token from table for “this” session – Start procedure • Procedure redirects to: https://accounts.google.com/o/oauth2/ • Google takes over: – Shows login information (shows the grants that the app is requesting) – User clicks okay – Google redirects to the URL specified in API console (which is page 102) 28 Server Application Google oauth2 server Token request Code User login and consent
  • 29. Google API – Authentication II • Page 102 (copied from 101) – Contains item to store query string – Dynamic action to process query string • Copy query string into item (using JavaScript) • Start procedure (using pl/sql block) – Request token – Do first API call to: » Get user info (id, email, name) – Return user info – Put user-info into application items • Submit the page – Login process • Prepare redirect (start or settings) (new user needs to set certain settings) • Set session language • Start standard apex login procedure – User is redirected to start-screen or settings-page 29 Server Application Google oauth2 server Exchange code for token Code
  • 30. Google API – making a request • Three options: – Using apex built-in restful client • Advantages: – Easy to implement – Results go in a apex-collection • Disadvantages – Limited use from PL/SQL – Limited debugging possibilities – Making your own request in PL/SQL • Advantages – Full debugging possibilities – Full access from PL/SQL • Disadvantages – More difficult to implement – Using apex_web_service package (not covered) • Advantages – like making own request – Easier to implement than own request, more difficult than restful client • Disadvantages – Less control than own request – Greatest lack in oracle apex is built in JSON parsing / extracting 30
  • 31. Google API – the built-in restful client • Create web-service reference in “Shared Components” • Create process, report or form utilising the reference – Process: store result in collection or items – Report: will run on a temp collection – Form: allows to post data 31
  • 32. Google API – making your own request • Relies on procedures and functions (within packages) • Gives full freedom in what to do • You must take errors into account • A request consists of: – URL (the question asked, aka: “endpoint”) – Header (for setting security and other parameters) • Authorization: Bearer {token} • Content-Length: {length_of_body} – Body (sometimes optional, used for POST, PUT and PATCH requests, contains the content sent) • Can contain json, xml or other structures, depending on webservice 32
  • 33. Google API - getUserInfo • RESTful webservice • Response in json format • Endpoint: https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token={token} • Response is json: { "id": "111253075910917653317" , "email": r.martens@smart4apex.nl , "verified_email": true , "name": "Richard Martens" , "given_name": "Richard" , "family_name": "Martens" , "link": https://plus.google.com/111253075910917653317 , "picture": https://lh6.googleusercontent.com/-Dz..NM/photo.jpg , "gender": "male" , "locale": "nl" , "hd": "smart4apex.nl" } 33