SlideShare ist ein Scribd-Unternehmen logo
1 von 58
BP203: Ext JS in XPages:
Modernizing IBM Notes
Views Without Sacrificing
Functionality
Dr. Mark Roden, PSC Group LLC

Š 2014 IBM Corporation
About Dr. Marky
 Over 16 years IBM Notes Domino® work
 Senior Consultant at PSC Group LLC
• XPages® Developer
• Project Leader
• 2014 IBM Champion

 Contact Information
•
•
•
•
2

Blog: http://www.xomino.com
Email: marky@xomino.com
Twitter: @markyroden
Skype: marky.roden

www.psclistens.com

@pscgroup
3
Agenda
 What is Ext JS?
 What are Ext JS Grids?
 Adding Ext JS to an XPages application

 Integration with REST services
– How many documents really?
 What capabilities do Ext JS Grids provide?
 User experience considerations

4
What is Ext JS ?

5
What is Ext JS?
 Originally built as an add-on library extension of YUI by Jack Slocum (circa 2005)

 Sencha Inc created June 2010
– Ext JS merged with JQTouch and Raphaël
 Dual License JavaScript library
– Open Source GPL
– Commercial

6
What is Ext JS?
 Data Gridding

7
What is Ext JS?
 Tree Viewing

8
What is Ext JS?
 Data Charting

9
What is Ext JS?
 Drag and Dropping

10
What is Ext JS?
 Fully Functioning JavaScript Framework Library

11
What are Ext JS Grids?

12
What are Ext JS Grids?
 Discrete subsection of Ext JS functionality
 It’s akin to an IBM Notes client view on the web…
– With almost every additional feature you wished for

 True evolution of web based data management

 For examples see
http://docs.sencha.com/extjs/4.2.0/extjs-build/examples/#sample-3

13
What are Ext JS Grids?
 Traditional notes views on the web
– Functional: 1997 Web experience

14
What are Ext JS Grids?
 XPages View controls
– More Functional: 2008 Web Experience

15
What are Ext JS Grids?
Highly configurable data display containers
 Ext JS Grid controls
– 2014 Web Experience

16
Adding Ext JS to an XPages
application

17
Adding Ext JS to an XPages application
 Download the library from sencha.com
– 45M (you don’t need all that)
– Take the resources and src folders
– Add them to WebContent

18
Adding Ext JS to an XPages application
 Add four things to your XPage
1. Reference links to the Ext JS JavaScript and CSS files
2. Custom CSJS file

3. A <DIV /> to display the grid in

19
Integration with REST services

20
Integration with REST
 Anatomy of the custom csjs file
Ext.require([
'Ext.data.*',
'Ext.grid.*',

AMD Loading of
libraries

'Ext.ux.grid.FiltersFeature'
]);

Ext.define('Person', {
extend: 'Ext.data.Model',
fields: ['firstname', 'lastname', 'address', 'city', 'state']
});

21

Field model
Integration with REST
Create the data store
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
autoDestroy: true,

Field Model

autoSync: false,
model: 'Person',
proxy: {
type: 'rest',
url: 'xRestService.xsp/byFirstName',
reader: {
type: 'json',
root: 'items'
},
writer: {
type: 'json'
},
noCache: false
}
});

22

The XPages REST service
Integration with REST
Define the Grid
var grid = Ext.create('Ext.grid.Panel', {
renderTo: 'gridHere',

//id of Div on the page

frame: true,
features: [filters],

//Add the Filter Feature

height: 400,
title: 'Users',
store: store,

//JSON data store from the REST

columns: [{

//Define each column

header: 'First123',

sortable: true,
dataIndex: 'firstname',
filterable: true
},
more columns]
});


});

23

//define column properties
Integration with REST
Display The Data
 How many documents really?
– ~95,500 documents

– 43 seconds to download
– 4.5 M data

24
What capabilities do Ext JS
Grids provide?

25
What capabilities do Ext JS Grids provide?
Demonstrations
 To view the examples see

http://demo.xomino.com/xomino/ExtJS.nsf

26
What capabilities do Ext JS Grids provide?
 Like a notes view
– Sorting Columns
– Categories
– Searches
• By Field
• By Date
– Column Totals
– Selecting single / multiple
documents
• Taking actions upon them

27
What capabilities do Ext JS Grids provide?
 Better that a notes view
– Sorting by Multiple Columns
– At the same time
• On the fly
• By the user
• Programmatically

28
What capabilities do Ext JS Grids provide?
 Better that a notes view
– Categories (Grouping )
• On the fly
• No design changes
• Any column
• Dynamic control of the Category
• Sorting and Categories work together
harmoniously!

29
What capabilities do Ext JS Grids provide?
 Better that a notes view
– Reordering Columns on the fly

30
What capabilities do Ext JS Grids provide?
 Better that a notes view
– Searching by column
• Not just by field
• Searching by multiple
column values
• Giving the power to
the users

31
What capabilities do Ext JS Grids provide?
 Better that a notes view
– Editing of documents via the view
• Editing of row values within the grid
• REST CRUD Update

32
What capabilities do Ext JS Grids provide?
 Better that a notes view
– Locking Columns - Like Excel

• Fixed columns
• Dynamic adding of locked
columns
•
• Sorting still works

33
What capabilities do Ext JS Grids provide?
 Better that a notes view
– Column Totals (more than one)
• Totals on any column
• On the fly WITH search
• Any mathematical computation
not a total

34
What capabilities do Ext JS Grids provide?
 Better that a notes view
– HTML formatting of columns

• Icons
• Grouping of icons
• Colors based on values

35
User experience considerations

36
User considerations
When is too many documents?
 How many documents?
– Connection speed
• 200 documents

• 20 columns
• 200K of text
• Time taken: 200ms
– Data overload reality
• Would you give someone a 100,000 line excel sheet to analyze ?

37
User considerations
Options for loading data
 Loading data
– What is a better experience?
• Quicker loading

• Seeing progress as the data loads
– End user experience depends on multiple factors
• Network
• User expectations
• Data size
• Browser

38
User considerations
The BufferedRenderer object
 Released with Ext JS 4.2
 BufferedRenderer object

– Loads data dynamically
– Orders of magnitude less DOM elements created
• Significant consideration in XPiNC and IE8
– http://vimeo.com/59611158

39
User considerations
Options for loading data
 Adding a loading indicator
helps users understand
something is happening

40
User considerations
The BufferedRenderer object
 Significantly reduces the number of DOM elements being managed in memory

14522 DOM elements
Without BufferedRenderer
41

707 DOM Elements
With BufferedRenderer
User considerations
Page refresh
 That is a lot of data to load and reload
– Paging is possible

• Not desirable though - Ugly user experience
 Action the selected documents not the whole grid

– 1000 document reloaded = 100K+
– 1 documents reloaded = <5 K
– 0 documents reloaded = 0 K !

42
User considerations

Only reload the data – don’t reload the page
 Grid re-use improves user experience
– Change category ?
– Show the same grid – load different data
• Or
– Show the same data and programmatically filter it

31 documents displayed
43

1524 documents displayed
User considerations
Using LocalStorage
 HTML5 localStorage
– Permanent string storage
– When used to cache grid data, it can perceptively improve load time

44
User considerations
Using LocalStorage
 HTML5 localStorage
– Limitations
– Chrome
• 2.5M
– Firefox
• 5M
– Internet Explorer
• 10M

45
User considerations
Using LocalStorage
 Without local storage – 10.5 seconds

 11,470 documents

46
User considerations
Using LocalStorage
 With local storage – significant improvement

 1.7 seconds (6 times faster)

47
User considerations
Using LocalStorage
 But what if something changes?
– Just like IBM Notes client – indicate something has changed !
– Check periodically for changes / deletions
– Use a different REST service to update individual items in the grid

48
Questions ?
 For more information please check out

http://xomino.com/ExtJSConnect14
twitter: @MarkyRoden
Please don’t forget to do your evaluations

49
Acknowledgements and Disclaimers
Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates.
The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither
intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information
contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise
related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or
its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software.
All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and
performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you
will result in any specific sales, revenue growth or other results.

Š Copyright IBM Corporation 2014. All rights reserved.
 U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. IBM, the IBM logo, ibm.com, XPages and
IBM Notes Domino are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM
trademarked terms are marked on their first occurrence in this information with a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned
by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on
the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml
 Ext JS is a registered trademark of Sencha Inc

50
Extra Slides

51
Integration with REST
Display The Data
 JSON data from the service
 With extra columns….
 Each 5 column document is really
11 columns

52
Integration with REST
Display The Data
 JSON data from the service
 With reduced header columns….
 6 columns

53
Integration with REST
Display The Data
 How many documents really?
– ~95,500 documents

– 20 columns
(+6 bonus columns)
– 94 seconds to download
– 16M data

54
Integration with REST
Display The Data
 How many documents really?
– ~95,500 documents

– 5 columns
(+6 bonus columns)
– 76 seconds to download
– 5.7 M data

55
User considerations
 Opening and closing a document
– User experience is poor when they have to reload the grid and many documents
– Multiple solutions to the issue depending on user expectations

• New Window
• Tabs
• Dialogs

56
User considerations
 Opening and closing a document
– Using a tabbed interface

57
User considerations
 Hiding the Tabbed Bar
– The user does not know they are in a tabbed interface

58

Weitere ähnliche Inhalte

Was ist angesagt?

Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.Web
Chris Canal
 
SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...
SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...
SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...
Bill Ayers
 
SharePoint Development 101
SharePoint Development 101SharePoint Development 101
SharePoint Development 101
Greg Hurlman
 

Was ist angesagt? (20)

Amazon.com's Web Services Opportunity
Amazon.com's Web Services OpportunityAmazon.com's Web Services Opportunity
Amazon.com's Web Services Opportunity
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best Practices
 
Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.
 
Alfresco Digital Business Platform Builder Experience
Alfresco Digital Business Platform Builder ExperienceAlfresco Digital Business Platform Builder Experience
Alfresco Digital Business Platform Builder Experience
 
D2 - Automate Custom Solutions Deployment on Office 365 and Azure - Paolo Pia...
D2 - Automate Custom Solutions Deployment on Office 365 and Azure - Paolo Pia...D2 - Automate Custom Solutions Deployment on Office 365 and Azure - Paolo Pia...
D2 - Automate Custom Solutions Deployment on Office 365 and Azure - Paolo Pia...
 
Frontender in-2016
Frontender in-2016Frontender in-2016
Frontender in-2016
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.Web
 
Testing your Single Page Application
Testing your Single Page ApplicationTesting your Single Page Application
Testing your Single Page Application
 
SPUnite17 Introduction to the Office Dev PnP Core Libraries
SPUnite17 Introduction to the Office Dev PnP Core LibrariesSPUnite17 Introduction to the Office Dev PnP Core Libraries
SPUnite17 Introduction to the Office Dev PnP Core Libraries
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web Components
 
Adobe AEM for Business Heads
Adobe AEM for Business HeadsAdobe AEM for Business Heads
Adobe AEM for Business Heads
 
Introduction to SharePoint Framework (SPFx)
Introduction to SharePoint Framework (SPFx)Introduction to SharePoint Framework (SPFx)
Introduction to SharePoint Framework (SPFx)
 
[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
[Patel] SPFx: An ISV Insight into latest Microsoft's customization model[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
 
SPCA2013 - Building Windows Client Applications for SharePoint 2013
SPCA2013 - Building Windows Client Applications for SharePoint 2013SPCA2013 - Building Windows Client Applications for SharePoint 2013
SPCA2013 - Building Windows Client Applications for SharePoint 2013
 
SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...
SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...
SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...
 
SharePoint Development 101
SharePoint Development 101SharePoint Development 101
SharePoint Development 101
 
Responsive Web Design and SharePoint
Responsive Web Design and SharePointResponsive Web Design and SharePoint
Responsive Web Design and SharePoint
 
SharePoint Framework 101 (SPFx)
SharePoint Framework 101 (SPFx)SharePoint Framework 101 (SPFx)
SharePoint Framework 101 (SPFx)
 
Keystone.js 101
Keystone.js 101Keystone.js 101
Keystone.js 101
 
All about SPFx
All about SPFxAll about SPFx
All about SPFx
 

Ähnlich wie Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrificing Functionality

ICS UserGroup - 2015 - Infrastructure Assessment - Analyze, Visualize and Opt...
ICS UserGroup - 2015 - Infrastructure Assessment - Analyze, Visualize and Opt...ICS UserGroup - 2015 - Infrastructure Assessment - Analyze, Visualize and Opt...
ICS UserGroup - 2015 - Infrastructure Assessment - Analyze, Visualize and Opt...
Christoph Adler
 
Uma SunilKumar Resume
Uma SunilKumar ResumeUma SunilKumar Resume
Uma SunilKumar Resume
Uma Sunilkumar
 
IBM Rational HATS Overview 2013
IBM Rational HATS Overview 2013IBM Rational HATS Overview 2013
IBM Rational HATS Overview 2013
Strongback Consulting
 

Ähnlich wie Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrificing Functionality (20)

Lessons learned from the worlds largest XPage project
Lessons learned from the worlds largest XPage projectLessons learned from the worlds largest XPage project
Lessons learned from the worlds largest XPage project
 
Presenting Data – An Alternative to the View Control
Presenting Data – An Alternative to the View ControlPresenting Data – An Alternative to the View Control
Presenting Data – An Alternative to the View Control
 
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
 
ICS UserGroup - 2015 - Infrastructure Assessment - Analyze, Visualize and Opt...
ICS UserGroup - 2015 - Infrastructure Assessment - Analyze, Visualize and Opt...ICS UserGroup - 2015 - Infrastructure Assessment - Analyze, Visualize and Opt...
ICS UserGroup - 2015 - Infrastructure Assessment - Analyze, Visualize and Opt...
 
ASMUG February 2015 Knowledge Event
ASMUG February 2015 Knowledge EventASMUG February 2015 Knowledge Event
ASMUG February 2015 Knowledge Event
 
Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)
Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)
Framework Enabling End-Users to Maintain Web Applications (ICICWS2015)
 
SQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 QuestionsSQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 Questions
 
Nwtl2017 extending and customizing ibm connections cloud
Nwtl2017 extending and customizing ibm connections cloudNwtl2017 extending and customizing ibm connections cloud
Nwtl2017 extending and customizing ibm connections cloud
 
Access Data from XPages with the Relational Controls
Access Data from XPages with the Relational ControlsAccess Data from XPages with the Relational Controls
Access Data from XPages with the Relational Controls
 
Uma SunilKumar Resume
Uma SunilKumar ResumeUma SunilKumar Resume
Uma SunilKumar Resume
 
IBM Rational HATS Overview 2013
IBM Rational HATS Overview 2013IBM Rational HATS Overview 2013
IBM Rational HATS Overview 2013
 
Essay On Active Directory
Essay On Active DirectoryEssay On Active Directory
Essay On Active Directory
 
engage 2015 - - 2015 - Infrastructure Assessment - Analyze, Visualize and Op...
engage 2015 -  - 2015 - Infrastructure Assessment - Analyze, Visualize and Op...engage 2015 -  - 2015 - Infrastructure Assessment - Analyze, Visualize and Op...
engage 2015 - - 2015 - Infrastructure Assessment - Analyze, Visualize and Op...
 
The Data Web and PLM
The Data Web and PLMThe Data Web and PLM
The Data Web and PLM
 
Cytoscape CI Chapter 2
Cytoscape CI Chapter 2Cytoscape CI Chapter 2
Cytoscape CI Chapter 2
 
Scalable Architectures - Microsoft Finland DevDays 2014
Scalable Architectures - Microsoft Finland DevDays 2014Scalable Architectures - Microsoft Finland DevDays 2014
Scalable Architectures - Microsoft Finland DevDays 2014
 
ISBG 2015 - Infrastructure Assessment - Analyze, Visualize and Optimize
ISBG 2015 - Infrastructure Assessment - Analyze, Visualize and OptimizeISBG 2015 - Infrastructure Assessment - Analyze, Visualize and Optimize
ISBG 2015 - Infrastructure Assessment - Analyze, Visualize and Optimize
 
(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide
 
Introduction to ExtJS and its new features
Introduction to ExtJS and its new featuresIntroduction to ExtJS and its new features
Introduction to ExtJS and its new features
 
Ext Js introduction and new features in Ext Js 6
Ext Js introduction and new features in Ext Js 6Ext Js introduction and new features in Ext Js 6
Ext Js introduction and new features in Ext Js 6
 

KĂźrzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

KĂźrzlich hochgeladen (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
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
 
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...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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 - 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
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
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
 

Connect 2014 - EXTJS in XPages: Modernizing IBM Notes Views Without Sacrificing Functionality

  • 1. BP203: Ext JS in XPages: Modernizing IBM Notes Views Without Sacrificing Functionality Dr. Mark Roden, PSC Group LLC Š 2014 IBM Corporation
  • 2. About Dr. Marky  Over 16 years IBM Notes DominoÂŽ work  Senior Consultant at PSC Group LLC • XPagesÂŽ Developer • Project Leader • 2014 IBM Champion  Contact Information • • • • 2 Blog: http://www.xomino.com Email: marky@xomino.com Twitter: @markyroden Skype: marky.roden www.psclistens.com @pscgroup
  • 3. 3
  • 4. Agenda  What is Ext JS?  What are Ext JS Grids?  Adding Ext JS to an XPages application  Integration with REST services – How many documents really?  What capabilities do Ext JS Grids provide?  User experience considerations 4
  • 5. What is Ext JS ? 5
  • 6. What is Ext JS?  Originally built as an add-on library extension of YUI by Jack Slocum (circa 2005)  Sencha Inc created June 2010 – Ext JS merged with JQTouch and RaphaĂŤl  Dual License JavaScript library – Open Source GPL – Commercial 6
  • 7. What is Ext JS?  Data Gridding 7
  • 8. What is Ext JS?  Tree Viewing 8
  • 9. What is Ext JS?  Data Charting 9
  • 10. What is Ext JS?  Drag and Dropping 10
  • 11. What is Ext JS?  Fully Functioning JavaScript Framework Library 11
  • 12. What are Ext JS Grids? 12
  • 13. What are Ext JS Grids?  Discrete subsection of Ext JS functionality  It’s akin to an IBM Notes client view on the web… – With almost every additional feature you wished for  True evolution of web based data management  For examples see http://docs.sencha.com/extjs/4.2.0/extjs-build/examples/#sample-3 13
  • 14. What are Ext JS Grids?  Traditional notes views on the web – Functional: 1997 Web experience 14
  • 15. What are Ext JS Grids?  XPages View controls – More Functional: 2008 Web Experience 15
  • 16. What are Ext JS Grids? Highly configurable data display containers  Ext JS Grid controls – 2014 Web Experience 16
  • 17. Adding Ext JS to an XPages application 17
  • 18. Adding Ext JS to an XPages application  Download the library from sencha.com – 45M (you don’t need all that) – Take the resources and src folders – Add them to WebContent 18
  • 19. Adding Ext JS to an XPages application  Add four things to your XPage 1. Reference links to the Ext JS JavaScript and CSS files 2. Custom CSJS file 3. A <DIV /> to display the grid in 19
  • 20. Integration with REST services 20
  • 21. Integration with REST  Anatomy of the custom csjs file Ext.require([ 'Ext.data.*', 'Ext.grid.*', AMD Loading of libraries 'Ext.ux.grid.FiltersFeature' ]); Ext.define('Person', { extend: 'Ext.data.Model', fields: ['firstname', 'lastname', 'address', 'city', 'state'] }); 21 Field model
  • 22. Integration with REST Create the data store var store = Ext.create('Ext.data.Store', { autoLoad: true, autoDestroy: true, Field Model autoSync: false, model: 'Person', proxy: { type: 'rest', url: 'xRestService.xsp/byFirstName', reader: { type: 'json', root: 'items' }, writer: { type: 'json' }, noCache: false } }); 22 The XPages REST service
  • 23. Integration with REST Define the Grid var grid = Ext.create('Ext.grid.Panel', { renderTo: 'gridHere', //id of Div on the page frame: true, features: [filters], //Add the Filter Feature height: 400, title: 'Users', store: store, //JSON data store from the REST columns: [{ //Define each column header: 'First123', sortable: true, dataIndex: 'firstname', filterable: true }, more columns] });  }); 23 //define column properties
  • 24. Integration with REST Display The Data  How many documents really? – ~95,500 documents – 43 seconds to download – 4.5 M data 24
  • 25. What capabilities do Ext JS Grids provide? 25
  • 26. What capabilities do Ext JS Grids provide? Demonstrations  To view the examples see http://demo.xomino.com/xomino/ExtJS.nsf 26
  • 27. What capabilities do Ext JS Grids provide?  Like a notes view – Sorting Columns – Categories – Searches • By Field • By Date – Column Totals – Selecting single / multiple documents • Taking actions upon them 27
  • 28. What capabilities do Ext JS Grids provide?  Better that a notes view – Sorting by Multiple Columns – At the same time • On the fly • By the user • Programmatically 28
  • 29. What capabilities do Ext JS Grids provide?  Better that a notes view – Categories (Grouping ) • On the fly • No design changes • Any column • Dynamic control of the Category • Sorting and Categories work together harmoniously! 29
  • 30. What capabilities do Ext JS Grids provide?  Better that a notes view – Reordering Columns on the fly 30
  • 31. What capabilities do Ext JS Grids provide?  Better that a notes view – Searching by column • Not just by field • Searching by multiple column values • Giving the power to the users 31
  • 32. What capabilities do Ext JS Grids provide?  Better that a notes view – Editing of documents via the view • Editing of row values within the grid • REST CRUD Update 32
  • 33. What capabilities do Ext JS Grids provide?  Better that a notes view – Locking Columns - Like Excel • Fixed columns • Dynamic adding of locked columns • • Sorting still works 33
  • 34. What capabilities do Ext JS Grids provide?  Better that a notes view – Column Totals (more than one) • Totals on any column • On the fly WITH search • Any mathematical computation not a total 34
  • 35. What capabilities do Ext JS Grids provide?  Better that a notes view – HTML formatting of columns • Icons • Grouping of icons • Colors based on values 35
  • 37. User considerations When is too many documents?  How many documents? – Connection speed • 200 documents • 20 columns • 200K of text • Time taken: 200ms – Data overload reality • Would you give someone a 100,000 line excel sheet to analyze ? 37
  • 38. User considerations Options for loading data  Loading data – What is a better experience? • Quicker loading • Seeing progress as the data loads – End user experience depends on multiple factors • Network • User expectations • Data size • Browser 38
  • 39. User considerations The BufferedRenderer object  Released with Ext JS 4.2  BufferedRenderer object – Loads data dynamically – Orders of magnitude less DOM elements created • Significant consideration in XPiNC and IE8 – http://vimeo.com/59611158 39
  • 40. User considerations Options for loading data  Adding a loading indicator helps users understand something is happening 40
  • 41. User considerations The BufferedRenderer object  Significantly reduces the number of DOM elements being managed in memory 14522 DOM elements Without BufferedRenderer 41 707 DOM Elements With BufferedRenderer
  • 42. User considerations Page refresh  That is a lot of data to load and reload – Paging is possible • Not desirable though - Ugly user experience  Action the selected documents not the whole grid – 1000 document reloaded = 100K+ – 1 documents reloaded = <5 K – 0 documents reloaded = 0 K ! 42
  • 43. User considerations Only reload the data – don’t reload the page  Grid re-use improves user experience – Change category ? – Show the same grid – load different data • Or – Show the same data and programmatically filter it 31 documents displayed 43 1524 documents displayed
  • 44. User considerations Using LocalStorage  HTML5 localStorage – Permanent string storage – When used to cache grid data, it can perceptively improve load time 44
  • 45. User considerations Using LocalStorage  HTML5 localStorage – Limitations – Chrome • 2.5M – Firefox • 5M – Internet Explorer • 10M 45
  • 46. User considerations Using LocalStorage  Without local storage – 10.5 seconds  11,470 documents 46
  • 47. User considerations Using LocalStorage  With local storage – significant improvement  1.7 seconds (6 times faster) 47
  • 48. User considerations Using LocalStorage  But what if something changes? – Just like IBM Notes client – indicate something has changed ! – Check periodically for changes / deletions – Use a different REST service to update individual items in the grid 48
  • 49. Questions ?  For more information please check out http://xomino.com/ExtJSConnect14 twitter: @MarkyRoden Please don’t forget to do your evaluations 49
  • 50. Acknowledgements and Disclaimers Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. Š Copyright IBM Corporation 2014. All rights reserved.  U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. IBM, the IBM logo, ibm.com, XPages and IBM Notes Domino are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol (ÂŽ or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml  Ext JS is a registered trademark of Sencha Inc 50
  • 52. Integration with REST Display The Data  JSON data from the service  With extra columns….  Each 5 column document is really 11 columns 52
  • 53. Integration with REST Display The Data  JSON data from the service  With reduced header columns….  6 columns 53
  • 54. Integration with REST Display The Data  How many documents really? – ~95,500 documents – 20 columns (+6 bonus columns) – 94 seconds to download – 16M data 54
  • 55. Integration with REST Display The Data  How many documents really? – ~95,500 documents – 5 columns (+6 bonus columns) – 76 seconds to download – 5.7 M data 55
  • 56. User considerations  Opening and closing a document – User experience is poor when they have to reload the grid and many documents – Multiple solutions to the issue depending on user expectations • New Window • Tabs • Dialogs 56
  • 57. User considerations  Opening and closing a document – Using a tabbed interface 57
  • 58. User considerations  Hiding the Tabbed Bar – The user does not know they are in a tabbed interface 58