SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Uniface Responsive
Development (2 of 3)
David Akerman – Solution Consultant
Agenda
Dynamic Server Page (DSP) Coding Recap
User Interface Techniques
Demo WebStart Application
Code Walkthrough
Coding DSP’s
Javascript API
Comparing ProcScript vs. JavaScript
Server <Detail> trigger
- button clicked
trigger detail
public web
webmessage "Button clicked"
return 0
end; trigger
Also onFocus, onBlur etc. in Extended Triggers
Browser Extended trigger
- editbox changed
webtrigger onChange
javascript
alert(this.getValue());
endjavascript
end ; trigger
Comparing ProcScript vs. JavaScript Operations
Server Operations
operation Update
public web
params
string pOptions: IN
endparams
; ProcScript Code
return 0
end ; Update
Browser Operations
weboperation Update
params
string pOptions: IN
endparams
javascript
// JavaScript code
endjavascript
end ; Update
Activating Operations
Call weboperation from server (queued)
webactivate $instancename.save()
Call server operation from browser (asynchronous)
this.getInstance().activate("save");
- use promises to control flow
operation getLocation
public web
params
string address : in
numeric latitude : inout
numeric longitude: inout
endparams
call CalcCoordinates(address, latitude, longitude)
end ; getLocation
Promises
webtrigger onClick
javascript
this.getInstance().activate("getLocation",address,null,null)
.then(
function(out){
google.maps.locate(out.args[1], out.args[2]);
},
function(e) { alert("Error getting the location !"); }
);
endjavascript
Get Location from GoogleJavaScript Activation Example
4
1
2
3
Browser
Server
Get Location Button
Scope
Controls data sent &
received between
browser & server
Scoping operations
block, prevent race
conditions
output input
trigger detail
public web
scope
input
output
operation AnotherDSP.show
endscope
activate "AnotherDSP".show()
return 0
end; trigger
Dynamic Scope
operation storeData
public web
scope
input
output
operation myInstanceList().store
endscope
variables
string vInstList, vInstName
endvariables
vInstList = $replace(MODIFIED_INSTANCES, 1, ";", ";", -1)
forlist vInstName in vInstList
newinstance "SUB_DSP", vInstName
activate vInstName.store()
endfor
end ; storeData
output input
weboperation myInstanceList() returns
JavaScript array of Instance Names
HTML 5 widgets: bound error labels
Field validation error handling when the user tabs or clicks away from a field.
Associate an error label via the ID attribute with prefix ‘uflderror:’
Validation
Use JavaScript for non-declarative browser checks:
Always validate on server!
CSS Classes
<input id="ufld:search.criteria.ui" type="text"
class="form-control" placeholder="Search...">
$fieldproperties("SEARCH.CRITERIA") = "html:class=form-control"
$fieldproperties("SELECT.BUTTON") = "html:class=btn btn-primary btn-lg"
javascript
fld.setProperty("html:class", "form-control");
endjavascript
Modifying Properties
CSS class:classname vs. html:class
putitem/id $FieldPropertes("select.buttons"), "class:btn-lg", "true"
putitem $FieldPropertes("select.buttons"), "!class:btn-lg"
javascript
field.setProperty("!class:btn-lg");
endjavascript
putitem/id $OccProperties("order"), "class:selected", "true"
putitem/id $EntityProperties("order"), "class:empty", "true"
Use class:classname property instead of html:class to change individual classes:
CSS Attributes
Add Attribute
putitem/id $OccProperties("ORDER"),"html:data-selected", "true"
HTML
<table id="uent:ORDER.POS" class="table table-hover">
<tbody>
<tr id="uocc:ORDER.POS" data-selected>
<td><span id="ufld:CODE.ORDER.POS">Code</span></td>
<td><span id="ufld:DESCR.ORDER.POS">Name</span></td>
</tr>
</tbody>
</table>
JavaScript Find
var elements = document.querySelectorAll('tr[data-selected]');
jQuery: $('tr[data-selected]').each(…) or $('tr[data-selected]')[0];
HTML 5 Widgets: Known Issues
http://unifaceinfo.com/fixes-updates/
Bug #31084: HTML 5 control Reconnect failures ($procerror -259)
Workaround: datatype=string in usys.ini webwidgets
[webwidgets]
EditBox=htmlinput(html:type=text;detail=dblclick;datatype=string)
DropDownList=htmlselect(html:size=1;datatype=string)
ListBox=htmlselect(html:size=3;datatype=string)
CheckBox=htmlinput(html:type=checkbox;datatype=string)
Bug #31422: Date display YYYY-MM-DD
Datetime field empty after update occurrence
Workaround: datatype=string in field widget more properties
UI Techniques
User Interface Techniques
Messaging & Error handling
Responsiveness
Tabs
Modality & Overlays
Navigation
Icons
Data Paging
Tabs
All content in one DSP
e.g. BOOTTABS
Each tab contained by div
element
• Hide with style display:none
Optional DspContainers
Modality - CSS
“Lightbox” effect via CSS
• Hidden dialog (html display:none)
• To show:
• Unhide (display:block)
• Change CSS z-index, position, background-color, opacity etc.
• CSS libraries typically provide CSS classes and JavaScript methods
e.g. .modal() + .hide()
Modality – Sample Implementation
Create a DSP to handle modal display
• Show() method to load a DSP in container
• Adds re-usable functionality (e.g. title, buttons, callback)
Paint a DSPContainer field on your main page
• Set initial value to load above modal controller DSP
Call methods in other DSP’s (e.g. SAMPLE_MODAL)
activate "<MODAL_DSP>".show(“Confirmation", vMessage, vInstanceName, "Yes,No", %
$instancename, “confirmCallback")
return 0
Data Paging
Use DBMS driver read
features:
offset
maxhits
See:
Help Topic:
“Data Paging in Web Applications”
Sample on unifaceinfo.com
Using Icon Fonts – Attributes Only
<html>
<head>
<link rel="stylesheet" type="text/css"
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-
awesome.min.css" />
</head>
<body>
<i id="ufld:btn_home.buttons.ui" class="fa fa-home fa-fw"></i>
</body>
</html>
Using Icon Fonts – Modelled Buttons
Uniface button HTML
<input id="ufld:RET.BUTTONS.UI" type="button"
class="btn btn-primary fa" value="Button" />
#defines
; fa-refresh – see font-awesome cheatsheet
#define B_BROWSE_ICON = &#xf021
Format trigger
#if (<$componentType> = D)
$format = $concat($string("<B_BROWSE_ICON>; "), "Retrieve")
#endif
Considerations
Security
Sensitive data – can it be tampered with?
• URL, Cookie, Hidden Fields can be modified
• If protection needed, hash encode and/or use server-side storage
• Always validate on server
• Use SSL
Uniface prevents modification of non-editable fields
• Requires $SERVER_SECRET in .asn
Check user is authenticated
Use “public web” for browser activated operations only
More information in Help – see “Web Security Guidelines”
Code Performance Tips
Use Javascript API to move logic to browser
Attach & Detach operations
• Clear data when removed from DspContainer?
Reduce data synchronisation
• Only paint user interface entities
• Business logic in services
• DSP containers
• Scoping
Reduce State Management
Cache!
Resources
Uniface Help: Tutorials
Uniface Training
uniface.info
- Samples, Forums, Blogs
youtube.com/uniface
github.com/uniface
- Frameworks & Tools
Walkthrough:
WebStart App
Thank You
& Questions

Weitere ähnliche Inhalte

Was ist angesagt?

Developing Applications for WebOS
Developing Applications for WebOSDeveloping Applications for WebOS
Developing Applications for WebOSChuq Von Rospach
 
Building and managing java projects with maven part-III
Building and managing java projects with maven part-IIIBuilding and managing java projects with maven part-III
Building and managing java projects with maven part-IIIprinceirfancivil
 
Primefaces Confess 2012
Primefaces Confess 2012Primefaces Confess 2012
Primefaces Confess 2012cagataycivici
 
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces Skills Matter
 
Beyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteBeyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteChristian Kaltepoth
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha
 
jQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends ForeverjQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends Foreverstephskardal
 
Running ms sql stored procedures in mule
Running ms sql stored procedures in muleRunning ms sql stored procedures in mule
Running ms sql stored procedures in muleAnilKumar Etagowni
 
Beyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteBeyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteChristian Kaltepoth
 
Harish Aspnet Deployment
Harish Aspnet DeploymentHarish Aspnet Deployment
Harish Aspnet Deploymentrsnarayanan
 
Resource Registries: Plone Conference 2014
Resource Registries: Plone Conference 2014Resource Registries: Plone Conference 2014
Resource Registries: Plone Conference 2014Rob Gietema
 
Spring Web Flow. A little flow of happiness.
Spring Web Flow. A little flow of happiness.Spring Web Flow. A little flow of happiness.
Spring Web Flow. A little flow of happiness.Alex Tumanoff
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSencha
 

Was ist angesagt? (20)

Workshop 21: React Router
Workshop 21: React RouterWorkshop 21: React Router
Workshop 21: React Router
 
Maven II
Maven IIMaven II
Maven II
 
Developing Applications for WebOS
Developing Applications for WebOSDeveloping Applications for WebOS
Developing Applications for WebOS
 
Resthub
ResthubResthub
Resthub
 
Building and managing java projects with maven part-III
Building and managing java projects with maven part-IIIBuilding and managing java projects with maven part-III
Building and managing java projects with maven part-III
 
Primefaces Confess 2012
Primefaces Confess 2012Primefaces Confess 2012
Primefaces Confess 2012
 
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
 
Beyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteBeyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in Rewrite
 
Express JS
Express JSExpress JS
Express JS
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
 
jQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends ForeverjQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends Forever
 
Vue, vue router, vuex
Vue, vue router, vuexVue, vue router, vuex
Vue, vue router, vuex
 
Zk doc1
Zk doc1Zk doc1
Zk doc1
 
Running ms sql stored procedures in mule
Running ms sql stored procedures in muleRunning ms sql stored procedures in mule
Running ms sql stored procedures in mule
 
Beyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteBeyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in Rewrite
 
Harish Aspnet Deployment
Harish Aspnet DeploymentHarish Aspnet Deployment
Harish Aspnet Deployment
 
T5 Oli Aro
T5 Oli AroT5 Oli Aro
T5 Oli Aro
 
Resource Registries: Plone Conference 2014
Resource Registries: Plone Conference 2014Resource Registries: Plone Conference 2014
Resource Registries: Plone Conference 2014
 
Spring Web Flow. A little flow of happiness.
Spring Web Flow. A little flow of happiness.Spring Web Flow. A little flow of happiness.
Spring Web Flow. A little flow of happiness.
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
 

Andere mochten auch

ELSA France "Teaching is us!"
ELSA France "Teaching is us!" ELSA France "Teaching is us!"
ELSA France "Teaching is us!" Adrian Scarlett
 
Sexta Sesión Ordinaria de CTE 2016 2017
Sexta Sesión Ordinaria de CTE 2016 2017Sexta Sesión Ordinaria de CTE 2016 2017
Sexta Sesión Ordinaria de CTE 2016 2017Jolu Govi
 
Lightning Talk: OpenStreetMap MicroServices
Lightning Talk: OpenStreetMap MicroServicesLightning Talk: OpenStreetMap MicroServices
Lightning Talk: OpenStreetMap MicroServicesPascal Neis
 
La Gazette des Communes - Itw réseau social interne
La Gazette des Communes - Itw réseau social interneLa Gazette des Communes - Itw réseau social interne
La Gazette des Communes - Itw réseau social interneFranck Confino
 
High Five Conference 2017 Top 25 Takeaways
High Five Conference 2017 Top 25 Takeaways High Five Conference 2017 Top 25 Takeaways
High Five Conference 2017 Top 25 Takeaways Stan Phelps
 
BlueStore, A New Storage Backend for Ceph, One Year In
BlueStore, A New Storage Backend for Ceph, One Year InBlueStore, A New Storage Backend for Ceph, One Year In
BlueStore, A New Storage Backend for Ceph, One Year InSage Weil
 
Michael Collins - TBEX International 2017 - How to sell your blog to sponsors...
Michael Collins - TBEX International 2017 - How to sell your blog to sponsors...Michael Collins - TBEX International 2017 - How to sell your blog to sponsors...
Michael Collins - TBEX International 2017 - How to sell your blog to sponsors...TravelMedia.ie
 
Why Great Marketers Must Be Great Skeptics
Why Great Marketers Must Be Great SkepticsWhy Great Marketers Must Be Great Skeptics
Why Great Marketers Must Be Great SkepticsRand Fishkin
 
Squeezing Deep Learning Into Mobile Phones
Squeezing Deep Learning Into Mobile PhonesSqueezing Deep Learning Into Mobile Phones
Squeezing Deep Learning Into Mobile PhonesAnirudh Koul
 
Infographic: Medicare Marketing: Direct Mail: Still The #1 Influencer For Tho...
Infographic: Medicare Marketing: Direct Mail: Still The #1 Influencer For Tho...Infographic: Medicare Marketing: Direct Mail: Still The #1 Influencer For Tho...
Infographic: Medicare Marketing: Direct Mail: Still The #1 Influencer For Tho...Scott Levine
 
B2B Marketing and The Power of Twitter
B2B Marketing and The Power of TwitterB2B Marketing and The Power of Twitter
B2B Marketing and The Power of TwitterSteve Yanor
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsGood Funnel
 
The Be-All, End-All List of Small Business Tax Deductions
The Be-All, End-All List of Small Business Tax DeductionsThe Be-All, End-All List of Small Business Tax Deductions
The Be-All, End-All List of Small Business Tax DeductionsWagepoint
 
Design in Tech Report 2017
Design in Tech Report 2017Design in Tech Report 2017
Design in Tech Report 2017John Maeda
 
Winners Dengue hack #DISUMMIT
Winners Dengue hack #DISUMMITWinners Dengue hack #DISUMMIT
Winners Dengue hack #DISUMMITDigitYser
 
Kepçesepeti Digital Presentatation
Kepçesepeti Digital PresentatationKepçesepeti Digital Presentatation
Kepçesepeti Digital PresentatationKutsal Bayraktar
 
Candidate Relationship Management & Modern Talent Acquisition
Candidate Relationship Management & Modern Talent Acquisition Candidate Relationship Management & Modern Talent Acquisition
Candidate Relationship Management & Modern Talent Acquisition AppVault
 
Claves de la semana del 20 al 26 de marzo
Claves de la semana del 20 al 26 de marzoClaves de la semana del 20 al 26 de marzo
Claves de la semana del 20 al 26 de marzoCesce
 
Eating habits that are making you less productive at work
Eating habits that are making you less productive at workEating habits that are making you less productive at work
Eating habits that are making you less productive at workProofHub
 
How I Built my Community 'Radio' - and a career in digital media and WordPress
How I Built my Community 'Radio' - and a career in digital media and WordPressHow I Built my Community 'Radio' - and a career in digital media and WordPress
How I Built my Community 'Radio' - and a career in digital media and WordPressNagesh Pai
 

Andere mochten auch (20)

ELSA France "Teaching is us!"
ELSA France "Teaching is us!" ELSA France "Teaching is us!"
ELSA France "Teaching is us!"
 
Sexta Sesión Ordinaria de CTE 2016 2017
Sexta Sesión Ordinaria de CTE 2016 2017Sexta Sesión Ordinaria de CTE 2016 2017
Sexta Sesión Ordinaria de CTE 2016 2017
 
Lightning Talk: OpenStreetMap MicroServices
Lightning Talk: OpenStreetMap MicroServicesLightning Talk: OpenStreetMap MicroServices
Lightning Talk: OpenStreetMap MicroServices
 
La Gazette des Communes - Itw réseau social interne
La Gazette des Communes - Itw réseau social interneLa Gazette des Communes - Itw réseau social interne
La Gazette des Communes - Itw réseau social interne
 
High Five Conference 2017 Top 25 Takeaways
High Five Conference 2017 Top 25 Takeaways High Five Conference 2017 Top 25 Takeaways
High Five Conference 2017 Top 25 Takeaways
 
BlueStore, A New Storage Backend for Ceph, One Year In
BlueStore, A New Storage Backend for Ceph, One Year InBlueStore, A New Storage Backend for Ceph, One Year In
BlueStore, A New Storage Backend for Ceph, One Year In
 
Michael Collins - TBEX International 2017 - How to sell your blog to sponsors...
Michael Collins - TBEX International 2017 - How to sell your blog to sponsors...Michael Collins - TBEX International 2017 - How to sell your blog to sponsors...
Michael Collins - TBEX International 2017 - How to sell your blog to sponsors...
 
Why Great Marketers Must Be Great Skeptics
Why Great Marketers Must Be Great SkepticsWhy Great Marketers Must Be Great Skeptics
Why Great Marketers Must Be Great Skeptics
 
Squeezing Deep Learning Into Mobile Phones
Squeezing Deep Learning Into Mobile PhonesSqueezing Deep Learning Into Mobile Phones
Squeezing Deep Learning Into Mobile Phones
 
Infographic: Medicare Marketing: Direct Mail: Still The #1 Influencer For Tho...
Infographic: Medicare Marketing: Direct Mail: Still The #1 Influencer For Tho...Infographic: Medicare Marketing: Direct Mail: Still The #1 Influencer For Tho...
Infographic: Medicare Marketing: Direct Mail: Still The #1 Influencer For Tho...
 
B2B Marketing and The Power of Twitter
B2B Marketing and The Power of TwitterB2B Marketing and The Power of Twitter
B2B Marketing and The Power of Twitter
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
 
The Be-All, End-All List of Small Business Tax Deductions
The Be-All, End-All List of Small Business Tax DeductionsThe Be-All, End-All List of Small Business Tax Deductions
The Be-All, End-All List of Small Business Tax Deductions
 
Design in Tech Report 2017
Design in Tech Report 2017Design in Tech Report 2017
Design in Tech Report 2017
 
Winners Dengue hack #DISUMMIT
Winners Dengue hack #DISUMMITWinners Dengue hack #DISUMMIT
Winners Dengue hack #DISUMMIT
 
Kepçesepeti Digital Presentatation
Kepçesepeti Digital PresentatationKepçesepeti Digital Presentatation
Kepçesepeti Digital Presentatation
 
Candidate Relationship Management & Modern Talent Acquisition
Candidate Relationship Management & Modern Talent Acquisition Candidate Relationship Management & Modern Talent Acquisition
Candidate Relationship Management & Modern Talent Acquisition
 
Claves de la semana del 20 al 26 de marzo
Claves de la semana del 20 al 26 de marzoClaves de la semana del 20 al 26 de marzo
Claves de la semana del 20 al 26 de marzo
 
Eating habits that are making you less productive at work
Eating habits that are making you less productive at workEating habits that are making you less productive at work
Eating habits that are making you less productive at work
 
How I Built my Community 'Radio' - and a career in digital media and WordPress
How I Built my Community 'Radio' - and a career in digital media and WordPressHow I Built my Community 'Radio' - and a career in digital media and WordPress
How I Built my Community 'Radio' - and a career in digital media and WordPress
 

Ähnlich wie Uniface Lectures Webinar - Building Responsive Applications with Uniface: Development

Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3masahiroookubo
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkara JUG
 
Java Web Development with Stripes
Java Web Development with StripesJava Web Development with Stripes
Java Web Development with StripesSamuel Santos
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and ImprovedTimothy Fisher
 
ASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauSpiffy
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011Arun Gupta
 
Technical Preview: The New Shopware Admin
Technical Preview: The New Shopware AdminTechnical Preview: The New Shopware Admin
Technical Preview: The New Shopware AdminPhilipp Schuch
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Chris Alfano
 
Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4DEVCON
 
Spca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesSpca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesNCCOMMS
 
Javascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsJavascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsSoós Gábor
 
AngularJS vs. Ember.js vs. Backbone.js
AngularJS vs. Ember.js vs. Backbone.jsAngularJS vs. Ember.js vs. Backbone.js
AngularJS vs. Ember.js vs. Backbone.jsMark
 
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Arun Gupta
 
QuickConnect
QuickConnectQuickConnect
QuickConnectAnnu G
 
Workshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsWorkshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsSami Ekblad
 
SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015Pushkar Chivate
 
Training in Asp.net mvc3 platform-apextgi,noidaAspnetmvc3 j query
Training in Asp.net mvc3 platform-apextgi,noidaAspnetmvc3 j queryTraining in Asp.net mvc3 platform-apextgi,noidaAspnetmvc3 j query
Training in Asp.net mvc3 platform-apextgi,noidaAspnetmvc3 j queryprav068
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsFrancois Zaninotto
 

Ähnlich wie Uniface Lectures Webinar - Building Responsive Applications with Uniface: Development (20)

Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3
 
Flask – Python
Flask – PythonFlask – Python
Flask – Python
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFaces
 
Java Web Development with Stripes
Java Web Development with StripesJava Web Development with Stripes
Java Web Development with Stripes
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and Improved
 
ASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin Lau
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011
 
Jsf
JsfJsf
Jsf
 
Technical Preview: The New Shopware Admin
Technical Preview: The New Shopware AdminTechnical Preview: The New Shopware Admin
Technical Preview: The New Shopware Admin
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4
 
Spca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesSpca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_libraries
 
Javascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsJavascript frameworks: Backbone.js
Javascript frameworks: Backbone.js
 
AngularJS vs. Ember.js vs. Backbone.js
AngularJS vs. Ember.js vs. Backbone.jsAngularJS vs. Ember.js vs. Backbone.js
AngularJS vs. Ember.js vs. Backbone.js
 
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
 
QuickConnect
QuickConnectQuickConnect
QuickConnect
 
Workshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsWorkshop: Building Vaadin add-ons
Workshop: Building Vaadin add-ons
 
SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015
 
Training in Asp.net mvc3 platform-apextgi,noidaAspnetmvc3 j query
Training in Asp.net mvc3 platform-apextgi,noidaAspnetmvc3 j queryTraining in Asp.net mvc3 platform-apextgi,noidaAspnetmvc3 j query
Training in Asp.net mvc3 platform-apextgi,noidaAspnetmvc3 j query
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
 

Mehr von Uniface

Ubg Uniface 10 Version Control and Additions 2019
Ubg Uniface 10 Version Control and Additions 2019Ubg Uniface 10 Version Control and Additions 2019
Ubg Uniface 10 Version Control and Additions 2019Uniface
 
Ubg Uniface 10 Community Edition 2019
Ubg Uniface 10 Community Edition 2019Ubg Uniface 10 Community Edition 2019
Ubg Uniface 10 Community Edition 2019Uniface
 
Ubg Roadmap 2019
Ubg Roadmap 2019Ubg Roadmap 2019
Ubg Roadmap 2019Uniface
 
Ubg eLearning 2019
Ubg eLearning 2019Ubg eLearning 2019
Ubg eLearning 2019Uniface
 
Ubg Business Update 2019
Ubg Business Update 2019Ubg Business Update 2019
Ubg Business Update 2019Uniface
 
Uniface 10 Around the world by Jason Huggins
Uniface 10  Around the world by Jason HugginsUniface 10  Around the world by Jason Huggins
Uniface 10 Around the world by Jason HugginsUniface
 
Software imaging by Peter Lismer CEO
Software imaging by Peter Lismer CEO Software imaging by Peter Lismer CEO
Software imaging by Peter Lismer CEO Uniface
 
Uniface 10 Now is the time by David Akerman
Uniface 10 Now is the time by David AkermanUniface 10 Now is the time by David Akerman
Uniface 10 Now is the time by David AkermanUniface
 
Roadmap by Mike Taylor
Roadmap by Mike TaylorRoadmap by Mike Taylor
Roadmap by Mike TaylorUniface
 
Uniface I0 IDE Custom Menus and Worksheets
Uniface I0 IDE Custom Menus and WorksheetsUniface I0 IDE Custom Menus and Worksheets
Uniface I0 IDE Custom Menus and WorksheetsUniface
 
E learning jason huggins
E learning jason hugginsE learning jason huggins
E learning jason hugginsUniface
 
Uniface 10
Uniface 10Uniface 10
Uniface 10Uniface
 
Uniface Lectures Webinar - Application & Infrastructure Security - JSON Web T...
Uniface Lectures Webinar - Application & Infrastructure Security - JSON Web T...Uniface Lectures Webinar - Application & Infrastructure Security - JSON Web T...
Uniface Lectures Webinar - Application & Infrastructure Security - JSON Web T...Uniface
 
Uniface Lectures Webinar - Extending Applications for Mobile
Uniface Lectures Webinar - Extending Applications for Mobile Uniface Lectures Webinar - Extending Applications for Mobile
Uniface Lectures Webinar - Extending Applications for Mobile Uniface
 
Customer Case Study: Synapse Innovation
Customer Case Study: Synapse InnovationCustomer Case Study: Synapse Innovation
Customer Case Study: Synapse InnovationUniface
 
Uniface Lectures Webinar - Uniface Mobile
Uniface Lectures Webinar - Uniface MobileUniface Lectures Webinar - Uniface Mobile
Uniface Lectures Webinar - Uniface MobileUniface
 
Uniface Lectures Webinar - Uniface 10 Technical Deep Dive
Uniface Lectures Webinar - Uniface 10 Technical Deep DiveUniface Lectures Webinar - Uniface 10 Technical Deep Dive
Uniface Lectures Webinar - Uniface 10 Technical Deep DiveUniface
 
Uniface 10 Infographic
Uniface 10 InfographicUniface 10 Infographic
Uniface 10 InfographicUniface
 
Uniface Lectures Webinar: An Introduction to Uniface 10
Uniface Lectures Webinar: An Introduction to Uniface 10Uniface Lectures Webinar: An Introduction to Uniface 10
Uniface Lectures Webinar: An Introduction to Uniface 10Uniface
 
Uniface 10 Enterprise Edition
Uniface 10 Enterprise EditionUniface 10 Enterprise Edition
Uniface 10 Enterprise EditionUniface
 

Mehr von Uniface (20)

Ubg Uniface 10 Version Control and Additions 2019
Ubg Uniface 10 Version Control and Additions 2019Ubg Uniface 10 Version Control and Additions 2019
Ubg Uniface 10 Version Control and Additions 2019
 
Ubg Uniface 10 Community Edition 2019
Ubg Uniface 10 Community Edition 2019Ubg Uniface 10 Community Edition 2019
Ubg Uniface 10 Community Edition 2019
 
Ubg Roadmap 2019
Ubg Roadmap 2019Ubg Roadmap 2019
Ubg Roadmap 2019
 
Ubg eLearning 2019
Ubg eLearning 2019Ubg eLearning 2019
Ubg eLearning 2019
 
Ubg Business Update 2019
Ubg Business Update 2019Ubg Business Update 2019
Ubg Business Update 2019
 
Uniface 10 Around the world by Jason Huggins
Uniface 10  Around the world by Jason HugginsUniface 10  Around the world by Jason Huggins
Uniface 10 Around the world by Jason Huggins
 
Software imaging by Peter Lismer CEO
Software imaging by Peter Lismer CEO Software imaging by Peter Lismer CEO
Software imaging by Peter Lismer CEO
 
Uniface 10 Now is the time by David Akerman
Uniface 10 Now is the time by David AkermanUniface 10 Now is the time by David Akerman
Uniface 10 Now is the time by David Akerman
 
Roadmap by Mike Taylor
Roadmap by Mike TaylorRoadmap by Mike Taylor
Roadmap by Mike Taylor
 
Uniface I0 IDE Custom Menus and Worksheets
Uniface I0 IDE Custom Menus and WorksheetsUniface I0 IDE Custom Menus and Worksheets
Uniface I0 IDE Custom Menus and Worksheets
 
E learning jason huggins
E learning jason hugginsE learning jason huggins
E learning jason huggins
 
Uniface 10
Uniface 10Uniface 10
Uniface 10
 
Uniface Lectures Webinar - Application & Infrastructure Security - JSON Web T...
Uniface Lectures Webinar - Application & Infrastructure Security - JSON Web T...Uniface Lectures Webinar - Application & Infrastructure Security - JSON Web T...
Uniface Lectures Webinar - Application & Infrastructure Security - JSON Web T...
 
Uniface Lectures Webinar - Extending Applications for Mobile
Uniface Lectures Webinar - Extending Applications for Mobile Uniface Lectures Webinar - Extending Applications for Mobile
Uniface Lectures Webinar - Extending Applications for Mobile
 
Customer Case Study: Synapse Innovation
Customer Case Study: Synapse InnovationCustomer Case Study: Synapse Innovation
Customer Case Study: Synapse Innovation
 
Uniface Lectures Webinar - Uniface Mobile
Uniface Lectures Webinar - Uniface MobileUniface Lectures Webinar - Uniface Mobile
Uniface Lectures Webinar - Uniface Mobile
 
Uniface Lectures Webinar - Uniface 10 Technical Deep Dive
Uniface Lectures Webinar - Uniface 10 Technical Deep DiveUniface Lectures Webinar - Uniface 10 Technical Deep Dive
Uniface Lectures Webinar - Uniface 10 Technical Deep Dive
 
Uniface 10 Infographic
Uniface 10 InfographicUniface 10 Infographic
Uniface 10 Infographic
 
Uniface Lectures Webinar: An Introduction to Uniface 10
Uniface Lectures Webinar: An Introduction to Uniface 10Uniface Lectures Webinar: An Introduction to Uniface 10
Uniface Lectures Webinar: An Introduction to Uniface 10
 
Uniface 10 Enterprise Edition
Uniface 10 Enterprise EditionUniface 10 Enterprise Edition
Uniface 10 Enterprise Edition
 

Kürzlich hochgeladen

Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Anthony Dahanne
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 

Kürzlich hochgeladen (20)

Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 

Uniface Lectures Webinar - Building Responsive Applications with Uniface: Development

  • 1.
  • 2. Uniface Responsive Development (2 of 3) David Akerman – Solution Consultant
  • 3. Agenda Dynamic Server Page (DSP) Coding Recap User Interface Techniques Demo WebStart Application Code Walkthrough
  • 6. Comparing ProcScript vs. JavaScript Server <Detail> trigger - button clicked trigger detail public web webmessage "Button clicked" return 0 end; trigger Also onFocus, onBlur etc. in Extended Triggers Browser Extended trigger - editbox changed webtrigger onChange javascript alert(this.getValue()); endjavascript end ; trigger
  • 7. Comparing ProcScript vs. JavaScript Operations Server Operations operation Update public web params string pOptions: IN endparams ; ProcScript Code return 0 end ; Update Browser Operations weboperation Update params string pOptions: IN endparams javascript // JavaScript code endjavascript end ; Update
  • 8. Activating Operations Call weboperation from server (queued) webactivate $instancename.save() Call server operation from browser (asynchronous) this.getInstance().activate("save"); - use promises to control flow
  • 9. operation getLocation public web params string address : in numeric latitude : inout numeric longitude: inout endparams call CalcCoordinates(address, latitude, longitude) end ; getLocation Promises webtrigger onClick javascript this.getInstance().activate("getLocation",address,null,null) .then( function(out){ google.maps.locate(out.args[1], out.args[2]); }, function(e) { alert("Error getting the location !"); } ); endjavascript Get Location from GoogleJavaScript Activation Example 4 1 2 3 Browser Server Get Location Button
  • 10. Scope Controls data sent & received between browser & server Scoping operations block, prevent race conditions output input trigger detail public web scope input output operation AnotherDSP.show endscope activate "AnotherDSP".show() return 0 end; trigger
  • 11. Dynamic Scope operation storeData public web scope input output operation myInstanceList().store endscope variables string vInstList, vInstName endvariables vInstList = $replace(MODIFIED_INSTANCES, 1, ";", ";", -1) forlist vInstName in vInstList newinstance "SUB_DSP", vInstName activate vInstName.store() endfor end ; storeData output input weboperation myInstanceList() returns JavaScript array of Instance Names
  • 12. HTML 5 widgets: bound error labels Field validation error handling when the user tabs or clicks away from a field. Associate an error label via the ID attribute with prefix ‘uflderror:’
  • 13. Validation Use JavaScript for non-declarative browser checks: Always validate on server!
  • 14. CSS Classes <input id="ufld:search.criteria.ui" type="text" class="form-control" placeholder="Search..."> $fieldproperties("SEARCH.CRITERIA") = "html:class=form-control" $fieldproperties("SELECT.BUTTON") = "html:class=btn btn-primary btn-lg" javascript fld.setProperty("html:class", "form-control"); endjavascript Modifying Properties
  • 15. CSS class:classname vs. html:class putitem/id $FieldPropertes("select.buttons"), "class:btn-lg", "true" putitem $FieldPropertes("select.buttons"), "!class:btn-lg" javascript field.setProperty("!class:btn-lg"); endjavascript putitem/id $OccProperties("order"), "class:selected", "true" putitem/id $EntityProperties("order"), "class:empty", "true" Use class:classname property instead of html:class to change individual classes:
  • 16. CSS Attributes Add Attribute putitem/id $OccProperties("ORDER"),"html:data-selected", "true" HTML <table id="uent:ORDER.POS" class="table table-hover"> <tbody> <tr id="uocc:ORDER.POS" data-selected> <td><span id="ufld:CODE.ORDER.POS">Code</span></td> <td><span id="ufld:DESCR.ORDER.POS">Name</span></td> </tr> </tbody> </table> JavaScript Find var elements = document.querySelectorAll('tr[data-selected]'); jQuery: $('tr[data-selected]').each(…) or $('tr[data-selected]')[0];
  • 17. HTML 5 Widgets: Known Issues http://unifaceinfo.com/fixes-updates/ Bug #31084: HTML 5 control Reconnect failures ($procerror -259) Workaround: datatype=string in usys.ini webwidgets [webwidgets] EditBox=htmlinput(html:type=text;detail=dblclick;datatype=string) DropDownList=htmlselect(html:size=1;datatype=string) ListBox=htmlselect(html:size=3;datatype=string) CheckBox=htmlinput(html:type=checkbox;datatype=string) Bug #31422: Date display YYYY-MM-DD Datetime field empty after update occurrence Workaround: datatype=string in field widget more properties
  • 19. User Interface Techniques Messaging & Error handling Responsiveness Tabs Modality & Overlays Navigation Icons Data Paging
  • 20. Tabs All content in one DSP e.g. BOOTTABS Each tab contained by div element • Hide with style display:none Optional DspContainers
  • 21. Modality - CSS “Lightbox” effect via CSS • Hidden dialog (html display:none) • To show: • Unhide (display:block) • Change CSS z-index, position, background-color, opacity etc. • CSS libraries typically provide CSS classes and JavaScript methods e.g. .modal() + .hide()
  • 22. Modality – Sample Implementation Create a DSP to handle modal display • Show() method to load a DSP in container • Adds re-usable functionality (e.g. title, buttons, callback) Paint a DSPContainer field on your main page • Set initial value to load above modal controller DSP Call methods in other DSP’s (e.g. SAMPLE_MODAL) activate "<MODAL_DSP>".show(“Confirmation", vMessage, vInstanceName, "Yes,No", % $instancename, “confirmCallback") return 0
  • 23. Data Paging Use DBMS driver read features: offset maxhits See: Help Topic: “Data Paging in Web Applications” Sample on unifaceinfo.com
  • 24. Using Icon Fonts – Attributes Only <html> <head> <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font- awesome.min.css" /> </head> <body> <i id="ufld:btn_home.buttons.ui" class="fa fa-home fa-fw"></i> </body> </html>
  • 25. Using Icon Fonts – Modelled Buttons Uniface button HTML <input id="ufld:RET.BUTTONS.UI" type="button" class="btn btn-primary fa" value="Button" /> #defines ; fa-refresh – see font-awesome cheatsheet #define B_BROWSE_ICON = &#xf021 Format trigger #if (<$componentType> = D) $format = $concat($string("<B_BROWSE_ICON>; "), "Retrieve") #endif
  • 27. Security Sensitive data – can it be tampered with? • URL, Cookie, Hidden Fields can be modified • If protection needed, hash encode and/or use server-side storage • Always validate on server • Use SSL Uniface prevents modification of non-editable fields • Requires $SERVER_SECRET in .asn Check user is authenticated Use “public web” for browser activated operations only More information in Help – see “Web Security Guidelines”
  • 28. Code Performance Tips Use Javascript API to move logic to browser Attach & Detach operations • Clear data when removed from DspContainer? Reduce data synchronisation • Only paint user interface entities • Business logic in services • DSP containers • Scoping Reduce State Management Cache!
  • 29. Resources Uniface Help: Tutorials Uniface Training uniface.info - Samples, Forums, Blogs youtube.com/uniface github.com/uniface - Frameworks & Tools