Transcript
Page 1: Developing in HTML5: Widgetbox & Sencha Touch

Tuesday, November 30, 2010

Page 2: Developing in HTML5: Widgetbox & Sencha Touch

Developing in HTML5Widgetbox & Sencha Touch

GILES GOODWIN, WIDGETBOX

Tuesday, November 30, 2010

Page 3: Developing in HTML5: Widgetbox & Sencha Touch

Widgetbox Mobile

Tuesday, November 30, 2010

Page 4: Developing in HTML5: Widgetbox & Sencha Touch

Widgetbox Mobile HTML5 Mobile App Builder

Non-developers build their own mobile appsDistribute the apps through the web

Tuesday, November 30, 2010

Page 5: Developing in HTML5: Widgetbox & Sencha Touch

Tuesday, November 30, 2010

Page 6: Developing in HTML5: Widgetbox & Sencha Touch

Over 1000 apps made

Tuesday, November 30, 2010

Page 7: Developing in HTML5: Widgetbox & Sencha Touch

Demo: Build an App

Tuesday, November 30, 2010

Page 8: Developing in HTML5: Widgetbox & Sencha Touch

Dissection of the App

Tuesday, November 30, 2010

Page 9: Developing in HTML5: Widgetbox & Sencha Touch

App BaseNavigation StylePage TypesPagesTheme Page SetsExtras

Architecture

Tuesday, November 30, 2010

Page 10: Developing in HTML5: Widgetbox & Sencha Touch

SetupExt.setup({ phoneIcon: icon, phoneStartupScreen: startupScreen, fullscreen: true, onReady: function() {

...var viewport = new Ext.TabPanel({ fullscreen: true, items: pagesArray});...

}});

Tuesday, November 30, 2010

Page 11: Developing in HTML5: Widgetbox & Sencha Touch

List PagesList/Detail page typesOne panelTwo cards: TableView and DetailViewTableView extends List/DataViewDetailView extends Panel

Tuesday, November 30, 2010

Page 12: Developing in HTML5: Widgetbox & Sencha Touch

Wbx.feed.FeedListView = Ext.extend(Ext.List, { itemSelector: 'li.entry', singleSelect: true,! itemTpl: new Ext.XTemplate(! ...! ! <li class="entry">...</li>! ... ), constructor: function(config) { config.proxy =

new Wbx.date.FeedProxy({feedUrl:config.feedUrl}); config.store = new Ext.data.Store({ proxy: config.proxy, model: 'FeedEntry'! ! ! ... }); feed.FeedListView.superclass.constructor.call(this, config);

},! // Other FeedListView specific overrides...});

List View Page Types

Tuesday, November 30, 2010

Page 13: Developing in HTML5: Widgetbox & Sencha Touch

Image CarouselDisplay set photosSwipe between photosSencha Carousel UsedPhotosDetail has a Carousel

Tuesday, November 30, 2010

Page 14: Developing in HTML5: Widgetbox & Sencha Touch

Wbx.photos.PhotoCarousel = Ext.extend(Wbx.PageViewController, { constructor: function(config) {! ! this.carousel = new Ext.Carousel({ items: photoPanels }); this.items = [this.carousel];

photos.PhotoCarousel.superclass.constructor.call(this, config);

},! ... setPhoto: function(index) { var photoCard = this.photoCards[index]; photoCard.doLayout(); this.carousel.setActiveItem(photoCard); }});

Carousel Page Types

Tuesday, November 30, 2010

Page 15: Developing in HTML5: Widgetbox & Sencha Touch

For input pages we used our codePost data to rest serviceGraphics package integrationgRaphaël

Input Pages

Tuesday, November 30, 2010

Page 16: Developing in HTML5: Widgetbox & Sencha Touch

Ext.util.JSONP.request({url: voteApiUrl,               callbackKey: 'wbx_callback',             

params: {                    wbx_token: WbxMobileSite.token

  },

callback: function(result) {        panel.getResults(true);   }});

Input Page Types: JSONP

Tuesday, November 30, 2010

Page 17: Developing in HTML5: Widgetbox & Sencha Touch

SectionsTime/DateSortedSub NavigationSplit buttonMore MenuListView

Advanced UI

Tuesday, November 30, 2010

Page 18: Developing in HTML5: Widgetbox & Sencha Touch

ColorsTitle and Tab barText and BackgroundsFontsTitlesItems and DetailsStyle ElementsIconsGradients

Themes

Tuesday, November 30, 2010

Page 19: Developing in HTML5: Widgetbox & Sencha Touch

// Let's start with the basics$base_color: #7c92ae;$base_gradient: 'glossy';

// Lists$list_active_gradient: 'bevel';$list_header_gradient: 'matte';

@import 'sencha-touch/default/all';

@include sencha-panel;@include sencha-buttons;...

SASS Setup

Tuesday, November 30, 2010

Page 20: Developing in HTML5: Widgetbox & Sencha Touch

Comparing Sencha with Rolling-Your-Own Code

Tuesday, November 30, 2010

Page 21: Developing in HTML5: Widgetbox & Sencha Touch

Scrolling

Tuesday, November 30, 2010

Page 22: Developing in HTML5: Widgetbox & Sencha Touch

ScrollingDocking : Pinning

Touch Event Management: Scroll not tap Scroll Up Here, Right There

Smooth : Feels Native

Tuesday, November 30, 2010

Page 23: Developing in HTML5: Widgetbox & Sencha Touch

Cross-Device

Tuesday, November 30, 2010

Page 24: Developing in HTML5: Widgetbox & Sencha Touch

Cross-DeviceAndroid

iPhone versionsiOS devices

Future platforms

Tuesday, November 30, 2010

Page 25: Developing in HTML5: Widgetbox & Sencha Touch

Cost Savings

Tuesday, November 30, 2010

Page 26: Developing in HTML5: Widgetbox & Sencha Touch

Cost SavingsDevelopers can focus on features

Less QAOverall maintenance savings

Tuesday, November 30, 2010

Page 27: Developing in HTML5: Widgetbox & Sencha Touch

Tips & Tricks

Tuesday, November 30, 2010

Page 28: Developing in HTML5: Widgetbox & Sencha Touch

Some tricks we like

Tuesday, November 30, 2010

Page 29: Developing in HTML5: Widgetbox & Sencha Touch

Some tricks we likeBase-64 and inline images in CSS

Load data on demand

Tuesday, November 30, 2010

Page 30: Developing in HTML5: Widgetbox & Sencha Touch

Web App Performance

Tuesday, November 30, 2010

Page 31: Developing in HTML5: Widgetbox & Sencha Touch

Web App PerformanceGZIPCDN

InlineKeep-Alive

Tuesday, November 30, 2010

Page 32: Developing in HTML5: Widgetbox & Sencha Touch

Thanks!Questions/Comments?

Tuesday, November 30, 2010


Top Related