SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
Learning To Run -
XPages for Lotus Notes Client Developers
An IdoSphere webinar

Presented by: Kathy Brown
Who am I...


 Kathy Brown
    Lotus Notes Developer, primarily for the Notes client, until recently
    Author for The View
    Co-author of the Lotus User Group’s Notes Developer Tips Newsletter
    Speaker at Lotusphere, The View’s Developer conference and several LUGs
    Twitter addict
    Runner
What this session is...


 Tips and transitions for Notes client developers
What this session is not...


 A step-by-step how to
 Best practices
 Advanced topics
What We’ll Cover


 Building Blocks
 Languages
 More
Building Blocks


 Forms
 Views
 Subforms
 Framesets
 Outlines
 Pages
Building Blocks


 Xpages
 Core controls
 Container controls
 Custom controls
Separation of Data and UI


 Traditional Notes Dev
    Forms combined data and UI




 Xpages
    Separate data from UI
        Create forms just as data holders,
        no need to prettify
        Create views for lookups, no need
        to prettify (no need for dual
        sorting!)
Customer Name
Customer ID
Customer Address
Customer Purchases


                 Customer Name
                 Customer Address
                 Widget ID
                 Widget Name
                 Widget Description


                                      Widget ID
                                      Widget Name
                                      Widget Description
                                      Widget Image
Data binding


 Because the data and the UI are separate, we have to
 “bind” data to our elements
 Xpage
    Can define a domino document or view as a data source
 Custom Controls and Container Controls like Panel
    Can define a domino document or view as a data source
 Repeat Controls and certain Core Controls
    Use data binding
Data binding


 Simple data binding
    Select a source from a list, or add another
    Select an item to bind to
    Example: select a document from the source and a field from that document to
    bind to
 Javascript
    Utilize the JavaScript editor to write server side javascript
    Example: database.getView("movies by genre").getAllDocumentsByKey(genre);
 Advanced
    Use expression language, scoped variable, component parameter or custom
    code for data binding
DDE
Quick Tip


 Window --> Reset Perspective is your friend
The Outline


 Easily locate items on the Xpage
 Drag & Drop items to new locations
Source


 Easily change values or properties
 See the Matrix
Design pane




              NOT DONE
Properties
Core Controls
What’s with the “group”
controls?
Something familiar*
*Sort of


  Edit Box
  Rich Text
  Multiline Edit Box
  List Box
  Combo Box
Quick Tip


 When adding @formula values for a combo box (or list
 box) the default condition is “Compute on Page Load”
 Remember to change that to “Compute Dynamically” in
 the script editor

                         OR go to the source and change
                         the “$” to “#”
More Core Controls
Core Controls - Label


 Why Use a Label?

 More control
 More programmability
Core Controls - Errors


 Use to ... display errors


 Don’t forget to remove!
Panel Control


 Sort of, kind of, like a layer...
 on steroids.
 Or like an embedded view...
 on steroids.
 Or like if a layer and an embedded view had a baby.
Repeat Controls


 No Traditional Notes Client equivalent
 And that’s a good thing

 A repeat control allows you to put controls inside (like
 Edit boxes or computed values, but also more repeat
 controls!) that repeat on the page
Container Controls


 Include Page - allows you to include an Xpage inside
 another Xpage

 Table - We know all about this one!

 View - kind of like an embedded view, but better

 Tabbed Panel - multiple panels with...tabs!

 Section - We’ve seen this before, too
Custom Controls


 Closest traditional equivalent are subforms
 Create custom controls to hold other controls stored
 together
 Can be a “create once, use multiple times” control for
 footers or headers, for example
Quick Tip


 CTRL+SHIFT+F in the source
@Formula in XPages


 @Formula is available for use in Server Side JavaScript
 (SSJS)
 Not all @Formula are supported in XPages
@Functions Not Supported in
XPages
 @AbstractSimple     @CheckAlarms          @DeleteField         @DoWhile

 @Accessed           @CheckFormulaSyntax   @DialogBox           @EditECL

 @ACos               @Command              @DocChildren         @EditUserECL

 @AddToFolder        @Compare              @DocDescendants      @EnableAlarms

 @AdminECLIsLocked   @ConfigFile            @DocFields           @Environment

 @All                @Cos                  @DocLength           @Eval

 @AllChildren        @DB2Schema            @DocLevel            @Exp

 @AllDescendants     @DbCommand            @DocLock             @FileDir

 @Ascii              @DbExists             @DocMark             @FloatEq

 @ASin               @DbManager            @DocNumber           @FontList

 @ATan               @DDEExecute           @DocOmmittedLength   @For

 @ATan2              @DDEInitiate          @DocParentNumber     @FormLanguage

 @BrowserInfo        @DDEPoke              @DocSiblings         @GetAddressBooks

 @BusinessDays       @DDETerminate         @DocumentUniqueID    @GetCurrentTimeZone

 @Certificate         @DeleteDocument       @Domain              @GetDocField
@Functions Not Supported in
XPages (cont.)
@GetFocusTable               @IsDocBeingRecalculated @Locale                        @OrgDir

@GetHTTPHeader               @IsDocTruncated           @Log                         @Password

@GetIMContactListGroupNames @IsEmbeddedInsideWCT       @MailDbName                  @PasswordQuality

@GetPortsList                @IsExpandable             @MailEncryptSavedPreference @Pi

@GetProfileField              @IsInCompositeApp         @MailEncryptSentPreference   @PickList

@GetViewInfo                 @IsModalHelp              @MailSavePreference          @Platform

@HardDeleteDocument          @IsUsingJavaElement       @MailSend                    @PolicyIsFieldLocked

@HashPassword                @IsValid                  @MailSignPreference          @PostedCommand

@InheritedDocumentUniqueID   @IsVirtualizedDirectory   @Matches                     @Power

@IsAgentEnabled              @Keywords                 @NameLookup                  @Prompt

@IsAppInstalled              @LanguagePreference       @Narrow                      @RefreshECL

@IsCategory                  @LaunchApp                @NoteID                      @RegQueryValue

@IsDB2                       @LDAPServer               @Nothing                     @Responses

@IsDocBeingEdited            @Like                     @OpenInNewWindow             @ServerAccess

@IsDocBeingMailed            @Ln                       @OptimizeMailAddress         @ServerName
@Functions Not Supported in
XPages (cont.)
 @Set                 @TemplateVersion        @URLHistory                @ViewTitle

 @SetDocField         @ThisName               @URLOpen                   @WebDbName

 @SetEnvironment      @ThisValue              @UrlQueryString            @WhichFolders

 @SetHTTPHeader       @TimeMerge              @UserAccess                @While

 @SetProfileField      @TimeToTextInZone       @UserNameLanguage          @Wide

 @SetTargetFrame      @TimeZoneToText         @UserNamesList             @Zone

 @SetViewInfo         @ToNumber               @UserPrivileges            DEFAULT

 @ShowParentPreview   @ToTime                 @UserRoles                 ENVIRONMENT

 @Sign                @Transform              @V2If                      FIELD

 @Sin                 @Unavailable            @V3UserName                REM

 @Sort                @UndeleteDocument       @V4UserAccess              SELECT

 @Soundex             @UpdateFormulaContext   @ValidateInternetAddress

 @Sqrt                @URLDecode              @VerifyPassword

 @StatusBar           @URLEncode              @Version

 @Tan                 @URLGetHeader           @ViewShowThisUnread
@Formula Syntax


 Three syntactic changes to use @Formula in XPages:
   Use commas rather than semicolons
   Use exact case
       Example:
            var uname = @Name(“[CN]”, @UserName())
   “null” should be used in place of 0 for formulas such as @Adjust
       Example:
            var adate = @Adjust (@Created(), null, null, 5, null, null, null)
@Formula Help
@Formula Help


 Help file is not very helpful!
 @Name(“[CN]”, name) – needs those quotes! But there
 is no example in the help file to demonstrate that!
 @UserName() – needs those parentheses! Again, no
 example in the help file to show that!
@Name in Help
Server Side Javascript
(SSJS)

 Server Side JavaScript is not LotusScript
 Close enough to fool you
 Get this - http://bit.ly/XpagesMap
 Learn about recycling
    http://bit.ly/Recycle1
    http://bit.ly/Recycle2
Close...
But not quite
Scoped Variables


 applicationScope
 sessionScope
 viewScope
 requestScope
Xpages Domino Object Map
Quick Tip


 Turn off “Synchronize Navigator with Editor Tab”
CSS and Themes


 Roll your own or
 Start with a framework*
     http://bit.ly/XpageFramework
     http://blueprintcss.org/
         David Leedy may cover this in his session




 *Start with a framework
Firebug
Where to get help...
or not

 Help files not so helpful

 http://www-10.lotus.com/ldd/ddwiki.nsf

 http://www-10.lotus.com/ldd/ddwiki.nsf/dx/
 NotesDocumentCollection_sample_JavaScript_code_for
 _XPages
Quick Tip


 Create different search scopes for the Help file
Learn Javascript and
Java

 Javascript
 http://www.w3schools.com/js/default.asp
 http://bit.ly/JavaScriptDefinitive



 Java
 http://bit.ly/HeadFirstJava
Test Server - Get one


 Typical Lotus Client development can get away with
 “testing” on a production server

 Doing that with Xpages...
Sample applications - get some


 Download applications and dig through them to see how
 they were created
    Frameworks on OpenNTF
    Matt White and Tim Clark’s Show and Tell sample app
Quick Tip


 Turn on “Select controls dialog box”
Quick Tip


 Visible versus Hide When
Quick Tip


 Upgrade whenever possible
Quick Tip


 Learn Eclipse
Resources


 http://xpages101.net/
 http://notesin9.com/
 Wikis - see earlier slide
 http://xpag.es/?cheatsheet
 PlanetLotus.org
 OpenNTF.org
 TLCC.com
 http://bit.ly/fIlpHn - all the bit.ly links bundled
THANK YOU!

Any Questions?

                 Your Logo
Kathy Brown
How to contact me:
  •E-mail: kathy@runningnotes.net
  •Twitter: kjbrown13 or NotesDevTips

  •My Website: http://runningnotes.net




       The Consultant in your Pocket webcast series: find us at http://consultantinyourpocket.com

Mais conteúdo relacionado

Mais procurados

Abstracting functionality with centralised content
Abstracting functionality with centralised contentAbstracting functionality with centralised content
Abstracting functionality with centralised content
Michael Peacock
 
Parsing strange v3
Parsing strange v3Parsing strange v3
Parsing strange v3
Hal Stern
 
Java web programming
Java web programmingJava web programming
Java web programming
Ching Yi Chan
 
Apache Olingo - ApacheCon Denver 2014
Apache Olingo - ApacheCon Denver 2014Apache Olingo - ApacheCon Denver 2014
Apache Olingo - ApacheCon Denver 2014
Stephan Klevenz
 
Documenting from the Trenches
Documenting from the TrenchesDocumenting from the Trenches
Documenting from the Trenches
Xavier Noria
 
JavaScript and jQuery Fundamentals
JavaScript and jQuery FundamentalsJavaScript and jQuery Fundamentals
JavaScript and jQuery Fundamentals
BG Java EE Course
 

Mais procurados (20)

Abstracting functionality with centralised content
Abstracting functionality with centralised contentAbstracting functionality with centralised content
Abstracting functionality with centralised content
 
Learning How to Shape and Configure an OData Service for High Performing Web ...
Learning How to Shape and Configure an OData Service for High Performing Web ...Learning How to Shape and Configure an OData Service for High Performing Web ...
Learning How to Shape and Configure an OData Service for High Performing Web ...
 
Parsing strange v3
Parsing strange v3Parsing strange v3
Parsing strange v3
 
Django workshop : let's make a blog
Django workshop : let's make a blogDjango workshop : let's make a blog
Django workshop : let's make a blog
 
Xml
XmlXml
Xml
 
HTML 5 Step By Step - Ebook
HTML 5 Step By Step - EbookHTML 5 Step By Step - Ebook
HTML 5 Step By Step - Ebook
 
Gaining the Knowledge of the Open Data Protocol (OData)
Gaining the Knowledge of the Open Data Protocol (OData)Gaining the Knowledge of the Open Data Protocol (OData)
Gaining the Knowledge of the Open Data Protocol (OData)
 
Html 5 tags
Html  5 tagsHtml  5 tags
Html 5 tags
 
Html tag list
Html tag listHtml tag list
Html tag list
 
Building a Backend with Flask
Building a Backend with FlaskBuilding a Backend with Flask
Building a Backend with Flask
 
Java web programming
Java web programmingJava web programming
Java web programming
 
OData Introduction and Impact on API Design (Webcast)
OData Introduction and Impact on API Design (Webcast)OData Introduction and Impact on API Design (Webcast)
OData Introduction and Impact on API Design (Webcast)
 
Apache Olingo - ApacheCon Denver 2014
Apache Olingo - ApacheCon Denver 2014Apache Olingo - ApacheCon Denver 2014
Apache Olingo - ApacheCon Denver 2014
 
Documenting from the Trenches
Documenting from the TrenchesDocumenting from the Trenches
Documenting from the Trenches
 
REST and AJAX Reconciled
REST and AJAX ReconciledREST and AJAX Reconciled
REST and AJAX Reconciled
 
Views
ViewsViews
Views
 
Html5, a gentle introduction
Html5, a gentle introduction Html5, a gentle introduction
Html5, a gentle introduction
 
Introduction to Html5
Introduction to Html5Introduction to Html5
Introduction to Html5
 
Xhtml 2010
Xhtml 2010Xhtml 2010
Xhtml 2010
 
JavaScript and jQuery Fundamentals
JavaScript and jQuery FundamentalsJavaScript and jQuery Fundamentals
JavaScript and jQuery Fundamentals
 

Semelhante a Learning To Run - XPages for Lotus Notes Client Developers

The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
SPTechCon
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLs
intelliyole
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
Mark Rackley
 
What is struts_en
What is struts_enWhat is struts_en
What is struts_en
techbed
 

Semelhante a Learning To Run - XPages for Lotus Notes Client Developers (20)

Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An Introduction
 
Compass Framework
Compass FrameworkCompass Framework
Compass Framework
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
 
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...
 
Exploring Symfony's Code
Exploring Symfony's CodeExploring Symfony's Code
Exploring Symfony's Code
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte Frühling
 
.Net template solution architecture
.Net template solution architecture.Net template solution architecture
.Net template solution architecture
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
 
CDI @javaonehyderabad
CDI @javaonehyderabadCDI @javaonehyderabad
CDI @javaonehyderabad
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 
Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHP
 
New Features of JSR 317 (JPA 2.0)
New Features of JSR 317 (JPA 2.0)New Features of JSR 317 (JPA 2.0)
New Features of JSR 317 (JPA 2.0)
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLs
 
Java Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : DatastoreJava Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : Datastore
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
 
What is struts_en
What is struts_enWhat is struts_en
What is struts_en
 
Silverlight 5 whats new overview
Silverlight 5 whats new overviewSilverlight 5 whats new overview
Silverlight 5 whats new overview
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh Gundecha
 
Php frameworks
Php frameworksPhp frameworks
Php frameworks
 

Mais de Kathy Brown

Top Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To KnowTop Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To Know
Kathy Brown
 
BP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @FormulaBP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @Formula
Kathy Brown
 

Mais de Kathy Brown (15)

2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration
2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration
2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration
 
Using Dashboards to Transform Application Data Visualization
Using Dashboards to Transform Application Data VisualizationUsing Dashboards to Transform Application Data Visualization
Using Dashboards to Transform Application Data Visualization
 
10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code
10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code
10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code
 
Don't Roll Your Own, Integrate
Don't Roll Your Own, IntegrateDon't Roll Your Own, Integrate
Don't Roll Your Own, Integrate
 
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
 
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
 
Improving Domino Designer
Improving Domino DesignerImproving Domino Designer
Improving Domino Designer
 
Improving Domino Designer ICON UK
Improving Domino Designer ICON UKImproving Domino Designer ICON UK
Improving Domino Designer ICON UK
 
Twitter Bootstrap
Twitter BootstrapTwitter Bootstrap
Twitter Bootstrap
 
Tools for the Domino Developer - BLUG presentation version
Tools for the Domino Developer - BLUG presentation versionTools for the Domino Developer - BLUG presentation version
Tools for the Domino Developer - BLUG presentation version
 
Top Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To KnowTop Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To Know
 
XPages: No Experience Needed
XPages: No Experience NeededXPages: No Experience Needed
XPages: No Experience Needed
 
Collaboration Party of One
Collaboration Party of OneCollaboration Party of One
Collaboration Party of One
 
UKLUG - Open The Toolbox - Tools for the Domino Developer
UKLUG - Open The Toolbox - Tools for the Domino DeveloperUKLUG - Open The Toolbox - Tools for the Domino Developer
UKLUG - Open The Toolbox - Tools for the Domino Developer
 
BP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @FormulaBP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @Formula
 

Último

Último (20)

Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Learning To Run - XPages for Lotus Notes Client Developers

  • 1. Learning To Run - XPages for Lotus Notes Client Developers An IdoSphere webinar Presented by: Kathy Brown
  • 2. Who am I... Kathy Brown Lotus Notes Developer, primarily for the Notes client, until recently Author for The View Co-author of the Lotus User Group’s Notes Developer Tips Newsletter Speaker at Lotusphere, The View’s Developer conference and several LUGs Twitter addict Runner
  • 3. What this session is... Tips and transitions for Notes client developers
  • 4. What this session is not... A step-by-step how to Best practices Advanced topics
  • 5. What We’ll Cover Building Blocks Languages More
  • 6. Building Blocks Forms Views Subforms Framesets Outlines Pages
  • 7. Building Blocks Xpages Core controls Container controls Custom controls
  • 8. Separation of Data and UI Traditional Notes Dev Forms combined data and UI Xpages Separate data from UI Create forms just as data holders, no need to prettify Create views for lookups, no need to prettify (no need for dual sorting!)
  • 9. Customer Name Customer ID Customer Address Customer Purchases Customer Name Customer Address Widget ID Widget Name Widget Description Widget ID Widget Name Widget Description Widget Image
  • 10. Data binding Because the data and the UI are separate, we have to “bind” data to our elements Xpage Can define a domino document or view as a data source Custom Controls and Container Controls like Panel Can define a domino document or view as a data source Repeat Controls and certain Core Controls Use data binding
  • 11. Data binding Simple data binding Select a source from a list, or add another Select an item to bind to Example: select a document from the source and a field from that document to bind to Javascript Utilize the JavaScript editor to write server side javascript Example: database.getView("movies by genre").getAllDocumentsByKey(genre); Advanced Use expression language, scoped variable, component parameter or custom code for data binding
  • 12. DDE
  • 13. Quick Tip Window --> Reset Perspective is your friend
  • 14. The Outline Easily locate items on the Xpage Drag & Drop items to new locations
  • 15. Source Easily change values or properties See the Matrix
  • 16. Design pane NOT DONE
  • 19. What’s with the “group” controls?
  • 20. Something familiar* *Sort of Edit Box Rich Text Multiline Edit Box List Box Combo Box
  • 21. Quick Tip When adding @formula values for a combo box (or list box) the default condition is “Compute on Page Load” Remember to change that to “Compute Dynamically” in the script editor OR go to the source and change the “$” to “#”
  • 23. Core Controls - Label Why Use a Label? More control More programmability
  • 24. Core Controls - Errors Use to ... display errors Don’t forget to remove!
  • 25. Panel Control Sort of, kind of, like a layer... on steroids. Or like an embedded view... on steroids. Or like if a layer and an embedded view had a baby.
  • 26. Repeat Controls No Traditional Notes Client equivalent And that’s a good thing A repeat control allows you to put controls inside (like Edit boxes or computed values, but also more repeat controls!) that repeat on the page
  • 27. Container Controls Include Page - allows you to include an Xpage inside another Xpage Table - We know all about this one! View - kind of like an embedded view, but better Tabbed Panel - multiple panels with...tabs! Section - We’ve seen this before, too
  • 28. Custom Controls Closest traditional equivalent are subforms Create custom controls to hold other controls stored together Can be a “create once, use multiple times” control for footers or headers, for example
  • 29. Quick Tip CTRL+SHIFT+F in the source
  • 30. @Formula in XPages @Formula is available for use in Server Side JavaScript (SSJS) Not all @Formula are supported in XPages
  • 31. @Functions Not Supported in XPages @AbstractSimple @CheckAlarms @DeleteField @DoWhile @Accessed @CheckFormulaSyntax @DialogBox @EditECL @ACos @Command @DocChildren @EditUserECL @AddToFolder @Compare @DocDescendants @EnableAlarms @AdminECLIsLocked @ConfigFile @DocFields @Environment @All @Cos @DocLength @Eval @AllChildren @DB2Schema @DocLevel @Exp @AllDescendants @DbCommand @DocLock @FileDir @Ascii @DbExists @DocMark @FloatEq @ASin @DbManager @DocNumber @FontList @ATan @DDEExecute @DocOmmittedLength @For @ATan2 @DDEInitiate @DocParentNumber @FormLanguage @BrowserInfo @DDEPoke @DocSiblings @GetAddressBooks @BusinessDays @DDETerminate @DocumentUniqueID @GetCurrentTimeZone @Certificate @DeleteDocument @Domain @GetDocField
  • 32. @Functions Not Supported in XPages (cont.) @GetFocusTable @IsDocBeingRecalculated @Locale @OrgDir @GetHTTPHeader @IsDocTruncated @Log @Password @GetIMContactListGroupNames @IsEmbeddedInsideWCT @MailDbName @PasswordQuality @GetPortsList @IsExpandable @MailEncryptSavedPreference @Pi @GetProfileField @IsInCompositeApp @MailEncryptSentPreference @PickList @GetViewInfo @IsModalHelp @MailSavePreference @Platform @HardDeleteDocument @IsUsingJavaElement @MailSend @PolicyIsFieldLocked @HashPassword @IsValid @MailSignPreference @PostedCommand @InheritedDocumentUniqueID @IsVirtualizedDirectory @Matches @Power @IsAgentEnabled @Keywords @NameLookup @Prompt @IsAppInstalled @LanguagePreference @Narrow @RefreshECL @IsCategory @LaunchApp @NoteID @RegQueryValue @IsDB2 @LDAPServer @Nothing @Responses @IsDocBeingEdited @Like @OpenInNewWindow @ServerAccess @IsDocBeingMailed @Ln @OptimizeMailAddress @ServerName
  • 33. @Functions Not Supported in XPages (cont.) @Set @TemplateVersion @URLHistory @ViewTitle @SetDocField @ThisName @URLOpen @WebDbName @SetEnvironment @ThisValue @UrlQueryString @WhichFolders @SetHTTPHeader @TimeMerge @UserAccess @While @SetProfileField @TimeToTextInZone @UserNameLanguage @Wide @SetTargetFrame @TimeZoneToText @UserNamesList @Zone @SetViewInfo @ToNumber @UserPrivileges DEFAULT @ShowParentPreview @ToTime @UserRoles ENVIRONMENT @Sign @Transform @V2If FIELD @Sin @Unavailable @V3UserName REM @Sort @UndeleteDocument @V4UserAccess SELECT @Soundex @UpdateFormulaContext @ValidateInternetAddress @Sqrt @URLDecode @VerifyPassword @StatusBar @URLEncode @Version @Tan @URLGetHeader @ViewShowThisUnread
  • 34. @Formula Syntax Three syntactic changes to use @Formula in XPages: Use commas rather than semicolons Use exact case Example: var uname = @Name(“[CN]”, @UserName()) “null” should be used in place of 0 for formulas such as @Adjust Example: var adate = @Adjust (@Created(), null, null, 5, null, null, null)
  • 36. @Formula Help Help file is not very helpful! @Name(“[CN]”, name) – needs those quotes! But there is no example in the help file to demonstrate that! @UserName() – needs those parentheses! Again, no example in the help file to show that!
  • 38. Server Side Javascript (SSJS) Server Side JavaScript is not LotusScript Close enough to fool you Get this - http://bit.ly/XpagesMap Learn about recycling http://bit.ly/Recycle1 http://bit.ly/Recycle2
  • 41. Scoped Variables applicationScope sessionScope viewScope requestScope
  • 43. Quick Tip Turn off “Synchronize Navigator with Editor Tab”
  • 44. CSS and Themes Roll your own or Start with a framework* http://bit.ly/XpageFramework http://blueprintcss.org/ David Leedy may cover this in his session *Start with a framework
  • 46. Where to get help... or not Help files not so helpful http://www-10.lotus.com/ldd/ddwiki.nsf http://www-10.lotus.com/ldd/ddwiki.nsf/dx/ NotesDocumentCollection_sample_JavaScript_code_for _XPages
  • 47. Quick Tip Create different search scopes for the Help file
  • 48. Learn Javascript and Java Javascript http://www.w3schools.com/js/default.asp http://bit.ly/JavaScriptDefinitive Java http://bit.ly/HeadFirstJava
  • 49. Test Server - Get one Typical Lotus Client development can get away with “testing” on a production server Doing that with Xpages...
  • 50. Sample applications - get some Download applications and dig through them to see how they were created Frameworks on OpenNTF Matt White and Tim Clark’s Show and Tell sample app
  • 51. Quick Tip Turn on “Select controls dialog box”
  • 52. Quick Tip Visible versus Hide When
  • 53. Quick Tip Upgrade whenever possible
  • 54. Quick Tip Learn Eclipse
  • 55. Resources http://xpages101.net/ http://notesin9.com/ Wikis - see earlier slide http://xpag.es/?cheatsheet PlanetLotus.org OpenNTF.org TLCC.com http://bit.ly/fIlpHn - all the bit.ly links bundled
  • 57. Kathy Brown How to contact me: •E-mail: kathy@runningnotes.net •Twitter: kjbrown13 or NotesDevTips •My Website: http://runningnotes.net The Consultant in your Pocket webcast series: find us at http://consultantinyourpocket.com