Top Banner
Nov 23, 2014 OpenUI5 – all you need for enterprise ready apps What is askQuestion(); ?
54
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

What is

askQuestion();

?

Page 2: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014 Sofia

var title = “OpenUI5 – all you need for enterprise ready apps”;

var info = {name: “Stanislava Baltova,

Petya Begovska, Peter Skelin”, otherOptional: “SAP Labs Bulgaria”};

Page 3: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

• What is OpenUI5 • App Architecture Overview and Concepts • Responsiveness out of the box • Digging Deeper • Custom Controls • Enterprise Ready • Summary • Q&A

agenda();

Page 4: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

JavaScript UI library Huge number of UI controls

MVC, data binding, templating, …

Enterprise-grade Responsive design Modern browsers and (touch) devices

Is Open Source, uses Open Source

What is OpenUI5

Page 5: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

data.js

We are now Open Source

• Free to use • Fueled by jQuery, data.js and more • Open to community feedback and bug reports • Open for contributions • Updated frequently • http://openui5.org

iScroll

Page 6: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Page 7: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

MVC

Views XML, JS, HTML,…

Controllers

ModelsJSON, XML or oData

data binding

user action

update

update

notify

Page 8: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Data Binding

•  DATA BINDING •  TWO-WAY-BINDING

App data

application)data+has)been)updated+

John Doe

Age: 36

John Doe, 35

UI5 Control / Output

Resulting UI5 Control / Output

App data updated

John Doe, 36

John Doe

Age: 35

App data

application)data+has)been)updated+

John Doe

Age: 36

John Doe, 35

UI5 Control / Output

UI5 Control / Output updated

John Doe, 36

John Doe

Age: 35

Resulting app data

Page 9: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

App Architecture overview and concepts

index.html (Single Page Application)

Page 10: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<!DOCTYPE  HTML>  <html>          <head>                  <script  src="https://openui5.hana.ondemand.com/resources/sap-­‐ui-­‐core.js"></script>                  <script>                          sap.ui.getCore().attachInit(function()  {                          });                  </script>          </head>          <body>                  <div  id="content"></div>          </body>  </html>  

index.html

Page 11: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<!DOCTYPE  HTML>  <html>          <head>                  <script  src="https://openui5.hana.ondemand.com/resources/sap-­‐ui-­‐core.js"></script>                  <script>                          sap.ui.getCore().attachInit(function()  {                          });                  </script>          </head>          <body>                  <div  id="content"></div>          </body>  </html>  

index.html

Page 12: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<!DOCTYPE  HTML>  <html>          <head>                  <script  src="https://openui5.hana.ondemand.com/resources/sap-­‐ui-­‐core.js"></script>                  <script>                          sap.ui.getCore().attachInit(function()  {                          });                  </script>          </head>          <body>                  <div  id="content"></div>          </body>  </html>  

index.html

Page 13: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<!DOCTYPE  HTML>  <html>          <head>                  <script  src="https://openui5.hana.ondemand.com/resources/sap-­‐ui-­‐core.js"></script>                  <script>                          sap.ui.getCore().attachInit(function()  {                          });                  </script>          </head>          <body>                  <div  id="content"></div>          </body>  </html>  

index.html

Page 14: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

App Architecture overview and concepts

Page 15: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<!DOCTYPE  HTML>  <html>          <head>                  <script  src="https://openui5.hana.ondemand.com/resources/sap-­‐ui-­‐core.js"></script>                  <script>                          sap.ui.getCore().attachInit(function()  {                                  new  sap.ui.core.ComponentContainer("ProductsComponent").placeAt("content");                          });                  </script>          </head>          <body>                  <div  id="content"></div>          </body>  </html>  

index.html

Page 16: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<!DOCTYPE  HTML>  <html>          <head>                  <script  src="https://openui5.hana.ondemand.com/resources/sap-­‐ui-­‐core.js"></script>                  <script>                          sap.ui.getCore().attachInit(function()  {                                  new  sap.ui.core.ComponentContainer("ProductsComponent").placeAt("content");                          });                  </script>          </head>          <body>                  <div  id="content"></div>          </body>  </html>  

index.html

Page 17: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<!DOCTYPE  HTML>  <html>          <head>                  <script  src="https://openui5.hana.ondemand.com/resources/sap-­‐ui-­‐core.js"></script>                  <script>                          sap.ui.getCore().attachInit(function()  {                                  new  sap.ui.core.ComponentContainer("ProductsComponent").placeAt("content");                          });                  </script>          </head>          <body>                  <div  id="content"></div>          </body>  </html>  

index.html

Page 18: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

sap.ui.core.UIComponent.extend("ProductsComponent",  {          metadata  :  {                  name  :  "Product  Browser",                  version  :  "1.0",                  rootView  :  "App",  

Component.js

Page 19: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

sap.ui.core.UIComponent.extend("ProductsComponent",  {          metadata  :  {                  name  :  "Product  Browser",                  version  :  "1.0",                  rootView  :  "App",  

Component.js

Page 20: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

sap.ui.core.UIComponent.extend("ProductsComponent",  {          metadata  :  {                  name  :  "Product  Browser",                  version  :  "1.0",                  rootView  :  "App",  

Component.js

Page 21: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

sap.ui.core.UIComponent.extend("ProductsComponent",  {          metadata  :  {                  name  :  "Product  Browser",                  version  :  "1.0",                  rootView  :  "App",  

Component.js

Page 22: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

App Architecture overview and concepts

Page 23: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

init  :  function()  {          //  Create  and  set  domain  model  to  the  component          var  oModel  =  new  sap.ui.model.odata.ODataModel(sServiceUrl);          this.setModel(oModel);  }  

Component.js

Page 24: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

init  :  function()  {          //  Create  and  set  domain  model  to  the  component          var  oModel  =  new  sap.ui.model.odata.ODataModel(sServiceUrl);          this.setModel(oModel);  }  

Component.js

Page 25: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

App Architecture overview and concepts

Page 26: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

routing  :  {          routes  :  [  {                  pattern  :  "",                  view  :  "Master",                  subroutes  :  [  {                          pattern  :  "product/{productId}/:tab:",                          view  :  "Detail"                  }  ]          }  ]  }  

Component.js

Page 27: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

routing  :  {          routes  :  [  {                  pattern  :  "",                  view  :  "Master",                  subroutes  :  [  {                          pattern  :  "product/{productId}/:tab:",                          view  :  "Detail"                  }  ]          }  ]  }  

Component.js

Page 28: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

App Architecture overview and concepts

Page 29: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

App Architecture overview and concepts

Page 30: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<List      items="{/Products}"      <items>          <ObjectListItem              press="onSelect"              title="{Name}"              numberUnit="USD">          </ObjectListItem>      </items>  </List>  

Master.view.xml

Page 31: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<List      items="{/Products}"      <items>          <ObjectListItem              press="onSelect"              title="{Name}"              numberUnit="USD">          </ObjectListItem>      </items>  </List>  

Master.view.xml

Page 32: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<List      items="{/Products}"      <items>          <ObjectListItem              press="onSelect"              title="{Name}"              numberUnit="USD">          </ObjectListItem>      </items>  </List>  

Master.view.xml

Page 33: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<List      items="{/Products}"      <items>          <ObjectListItem              press="onSelect"              title="{Name}"              numberUnit="USD">          </ObjectListItem>      </items>  </List>  

Master.view.xml

Page 34: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<List      items="{/Products}"      <items>          <ObjectListItem              press="onSelect"              title="{Name}"              numberUnit="USD">          </ObjectListItem>      </items>  </List>  

Master.view.xml

Page 35: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<List      items="{/Products}"      <items>          <ObjectListItem              press="onSelect"              title="{Name}"              numberUnit="USD">          </ObjectListItem>      </items>  </List>  

Master.view.xml

Page 36: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

<List      items="{/Products}"      <items>          <ObjectListItem              press="onSelect"              title="{Name}"              numberUnit="USD">          </ObjectListItem>      </items>  </List>  

Master.view.xml

Page 37: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

sap.ui.Controller.extend("Master",  {          onSelect  :  function(oEvent)  {                  //  Get  the  list  item  from  the  listItem  parameter                  this.showDetail(oEvent.getParameter("listItem"));          }  });  

Master.controller.js

Page 38: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

sap.ui.Controller.extend("Master",  {          onSelect  :  function(oEvent)  {                  //  Get  the  list  item  from  the  listItem  parameter                  this.showDetail(oEvent.getParameter("listItem"));          }  });  

Master.controller.js

Page 39: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

sap.ui.Controller.extend("Master",  {          onSelect  :  function(oEvent)  {                  //  Get  the  list  item  from  the  listItem  parameter                  this.showDetail(oEvent.getParameter("listItem"));          }  });  

Master.controller.js

Page 40: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

App Architecture overview and concepts

Page 41: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Dependency Management

Make it modular and reusable// Require/Declare for JavaScript files

Have it in any language you like// Resource Bundles

Single file for production// Grunt

Page 42: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Page 43: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Page 44: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Page 45: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Responsiveness out of the box

Page 46: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Digging Deeper

Controls Playground

The Demo Apps

The Developer Guide

The API

Ė ĺ Ĥ Ń

Page 47: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Custom Controls

• Controls can be defined on-the-fly in JS • Data binding etc. out of the box

A simple control:http://jsbin.com/openui5-control/2/edit

Page 48: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Enterprise Ready

• Supportability (e.g. Ctrl-Alt-Shift-S popup) • Internationalization and right-to-left support • Highest quality • Extensibility • Theming • Accessibility

Page 49: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Theming

Page 50: OpenUI5@JSNext Bulgaria 2014

Accessibility

Accessibility refers to the possibility for everyone, including and especially people with disabilities, to access and use technology and information products. More than 1 billion people in the world have some form of disability.

High Contrast Black theme

Keyboard Handling

Screen Readersupport

Page 51: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Summary

Open Source// Free for any use and contribution

ONE Responsive Lib // Across browsers and devices

Enterprise Ready

Powerful Development Concepts// MVC, data binding, templating…

180+ controls

Page 52: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Web: GitHub:

Docs & Demos: Twitter:

http://openui5.orghttps://github.com/SAP/openui5/https://openui5.hana.ondemand.com@OpenUI5

Thank you!

Page 53: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Upcoming events

ISTA Conference 26-27 Novemberhttp://istabg.org/

Azure Bootcamp http://azure-camp.eu/

UXify Bulgaria http://uxify.org/

SQLSaturday https://www.sqlsaturday.com/

and more js.next();

STAY TUNED FOR 2015:

Page 54: OpenUI5@JSNext Bulgaria 2014

Nov 23, 2014OpenUI5 – all you need for enterprise ready apps

Thanks to our Sponsors:

Diamond Sponsor:

Gold Sponsors:

Swag Sponsors:

Media Partners:

Silver Sponsors:

Hosting partner:

Technological Partners:

Bronze Sponsors: