Creating Content with iad JS

Size: px
Start display at page:

Download "Creating Content with iad JS"

Transcription

1 Creating Content with iad JS Part 2 The iad JS Framework Antoine Quint iad JS Software Engineer ios Apps and Frameworks 2

2 Agenda Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 3

3 Prerequisites Understanding of web technologies HTML CSS JavaScript DOM APIs Familiarity with UIKit 4

4 Introducing iad JS Motivations and features 5

5 6

6 iad Goals Emotion Interactivity Technology Media playback Expressive graphics Motion Touch 7

7 Rich Media 8

8 Rich Media Technologies Key features in WebKit on iphone 9

9 Rich Media Technologies Key features in WebKit on iphone <audio> 10

10 Rich Media Technologies Key features in WebKit on iphone <video> <audio> 11

11 Rich Media Technologies Key features in WebKit on iphone <video> 12

12 Rich Media Technologies Key features in WebKit on iphone CSS Transforms 2D and 3D 13

13 Rich Media Technologies Key features in WebKit on iphone CSS Transitions CSS Transforms 2D & 3D 14

14 Rich Media Technologies Key features in WebKit on iphone CSS Animations CSS Transitions 15

15 Rich Media Technologies Key features in WebKit on iphone CSS Animations Transitions 16

16 Rich Media Technologies Key features in WebKit on iphone Touch Events 17

17 Rich Media Technologies Key features in WebKit on iphone Touch Events 18

18 Rich Media Technologies Key features in WebKit on iphone 19

19 Rich Media 20

20 Rich Media 21

21 Rich Media 22

22 Mini Apps 23

23 24

24 Rich Media Mini Apps 25

25 26

26 iad JS Goals Streamline creation of rich ads Ensure high performance iad JS Features UIKit design and rich features Declarative programming model Modular and incremental building 27

27 How? 28

28 100% Web Standards No native code was hurt in the making of iad JS 29

29 Agenda Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 30

30 Core JavaScript Enhancements ADClass and ADObject 31

31 JavaScript Limitations Inheritance No explicit support for traditional inheritance in JavaScript No concept of a super class and no super keyword Property Synthesis Synthesized properties are prevalent in UIKit design No built-in support in JavaScript syntax Property Change Notifications 32

32 33

33 Core JavaScript Enhancements ADClass Utility Inheritance The superclass property ADObject Base Class Subclassing The callsuper() method Synthesis The synthetizedproperties array Notifications Observe property changes Automated With Synthesis 34

34 ADClass Inheritance // specify the superclass MyClass.superclass = ADObject; function MyClass () { // ensure parent constructor is called this.callsuper(); } // an instance method declaration MyClass.prototype.someMethod = function () { // method code }; // let ADClass process this class ADClass(MyClass); 35

35 ADClass Inheritance // specify the superclass MyClass.superclass = ADObject; function MyClass () { // ensure parent constructor is called this.callsuper(); } // an instance method declaration MyClass.prototype.someMethod = function () { // method code }; // let ADClass process this class ADClass(MyClass); 36

36 ADClass Inheritance // specify the superclass MyClass.superclass = ADObject; function MyClass () { // ensure parent constructor is called this.callsuper(); } // an instance method declaration MyClass.prototype.someMethod = function () { // method code }; // let ADClass process this class ADClass(MyClass); 37

37 ADClass Inheritance // specify the superclass MyClass.superclass = ADObject; function MyClass () { // ensure parent constructor is called this.callsuper(); } // an instance method declaration MyClass.prototype.someMethod = function () { // method code }; // let ADClass process this class ADClass(MyClass); 38

38 Property Synthesis Process MyClass.synthesizedProperties = ['foo']; MyClass.prototype.getFoo() exists? MyClass.prototype.setFoo() exists? Binds getting of foo to getfoo() Default getter, returns _foo Binds setting of foo to setfoo() Default setter, assigns to _foo 39

39 Property Synthesis Custom setter // specify properties to synthesize MyClass.synthesizedProperties = ['foo']; function MyClass () { // declare private ivar with convention _ prefix this._foo = 0; } // method automatically called when.foo is set MyClass.prototype.setFoo = function (foo) { // custom setter code this._foo = foo; }; ADClass(MyClass); 40

40 Property Synthesis Custom setter // specify properties to synthesize MyClass.synthesizedProperties = ['foo']; function MyClass () { // declare private ivar with convention _ prefix this._foo = 0; } // method automatically called when.foo is set MyClass.prototype.setFoo = function (foo) { // custom setter code this._foo = foo; }; ADClass(MyClass); 41

41 Property Synthesis Custom setter // specify properties to synthesize MyClass.synthesizedProperties = ['foo']; function MyClass () { // declare private ivar with convention _ prefix this._foo = 0; } // method automatically called when.foo is set MyClass.prototype.setFoo = function (foo) { // custom setter code this._foo = foo; }; ADClass(MyClass); 42

42 Property Synthesis Custom setter // specify properties to synthesize MyClass.synthesizedProperties = ['foo']; function MyClass () { // declare private ivar with convention _ prefix this._foo = 0; } // method automatically called when.foo is set MyClass.prototype.setFoo = function (foo) { // custom setter code this._foo = foo; }; ADClass(MyClass); 43

43 Property Synthesis Custom getter // specify properties to synthesize MyClass.synthesizedProperties = ['foo']; function MyClass () { // constructor code } // method automatically called when.foo is gotten MyClass.prototype.getFoo = function () { var foo; // custom code to compute foo return foo; }; ADClass(MyClass); 44

44 Property Observing Default protocol var controller = { myobject : new MyClass() }; controller.init = function () { // make our controller observe myobject.foo this.myobject.addpropertyobserver('foo', this); }; // controller must implement the ADPropertyChange protocol which defines the // handlepropertychange method as callback upon property change controller.handlepropertychange = function (observedobject, propertyname) { // handle foo property change }; 45

45 Property Observing Default protocol var controller = { myobject : new MyClass() }; controller.init = function () { // make our controller observe myobject.foo this.myobject.addpropertyobserver('foo', this); }; // controller must implement the ADPropertyChange protocol which defines the // handlepropertychange method as callback upon property change controller.handlepropertychange = function (observedobject, propertyname) { // handle foo property change }; 46

46 Property Observing Default protocol var controller = { myobject : new MyClass() }; controller.init = function () { // make our controller observe myobject.foo this.myobject.addpropertyobserver('foo', this); }; // controller must implement the ADPropertyChange protocol which defines the // handlepropertychange method as callback upon property change controller.handlepropertychange = function (observedobject, propertyname) { // handle foo property change }; 47

47 Property Observing Custom callback var controller = { myobject : new MyClass() }; controller.init = function () { // make our controller observe myobject.foo this.myobject.addpropertyobserver('foo', this, 'foodidchange'); }; // controller must implement the foodidchange method which we defined as the // custom callback in addpropertyobserver controller.foodidchange = function () { // handle.foo property change }; 48

48 Property Observing Custom callback var controller = { myobject : new MyClass() }; controller.init = function () { // make our controller observe myobject.foo this.myobject.addpropertyobserver('foo', this, 'foodidchange'); }; // controller must implement the foodidchange method which we defined as the // custom callback in addpropertyobserver controller.foodidchange = function () { // handle.foo property change }; 49

49 Summary Core JavaScript enhancements Traditional inheritance with superclass and callsuper() Built-in synthesis with synthesizedproperties Automated property change notifications through synthesis 50

50 Agenda Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 51

51 Working with Views and Controls ADView and ADControl 52

52 Views ADView Based on UIKit s UIView ADView is the base class for anything that renders on screen Wraps a DOM element and its subtree via the layer property Manual DOM manipulation possible with the hostinglayer property Transaction-based transition system HTML body accessible as ADRootView.sharedRoot 53

53 View Instantiation Using JavaScript APIs // create our ADScrollView instance var scrollview = new ADScrollView(); // set up the viewable size scrollview.position = new ADPoint(20, 20); scrollview.size = new ADSize(window.innerWidth - 40, window.innerheight - 40); // let's only scroll vertically and without indicators scrollview.verticalscrollenabled = false; scrollview.showshorizontalscrollindicator = false; // add to the root view to display the scroll view ADRootView.sharedRoot.addSubview(scrollView); 54

54 View Instantiation Using JavaScript APIs // create our ADScrollView instance var scrollview = new ADScrollView(); // set up the viewable size scrollview.position = new ADPoint(20, 20); scrollview.size = new ADSize(window.innerWidth - 40, window.innerheight - 40); // let's only scroll vertically and without indicators scrollview.verticalscrollenabled = false; scrollview.showshorizontalscrollindicator = false; // add to the root view to display the scroll view ADRootView.sharedRoot.addSubview(scrollView); 55

55 View Instantiation Using JavaScript APIs // create our ADScrollView instance var scrollview = new ADScrollView(); // set up the viewable size scrollview.position = new ADPoint(20, 20); scrollview.size = new ADSize(window.innerWidth - 40, window.innerheight - 40); // let's only scroll vertically and without indicators scrollview.verticalscrollenabled = false; scrollview.showshorizontalscrollindicator = false; // add to the root view to display the scroll view ADRootView.sharedRoot.addSubview(scrollView); 56

56 View Instantiation Using JavaScript APIs // create our ADScrollView instance var scrollview = new ADScrollView(); // set up the viewable size scrollview.position = new ADPoint(20, 20); scrollview.size = new ADSize(window.innerWidth - 40, window.innerheight - 40); // let's only scroll vertically and without indicators scrollview.verticalscrollenabled = false; scrollview.showshorizontalscrollindicator = false; // add to the root view to display the scroll view ADRootView.sharedRoot.addSubview(scrollView); 57

57 View Instantiation Generated markup <!-- this is the view s layer property --> <div class="ad-scroll-view ad-view" style="-webkit-transform: translate(20px, 20px); width: 280px; height: 440px;"> <!-- this is the view s hostinglayer property --> <div class="hosting-layer"> <!-- scrollable content --> </div> <!-- other private views specific to ADScrollView --> <div class="ad-scroll-indicator ad-view horizontal indicator-default"> </div> <div class="ad-scroll-indicator ad-view vertical indicator-default"> </div> </div> 58

58 Why so much code? 59

59 I d rather use markup! 60

60 The Case for a Declarative Approach Ease of authoring Easier to style content with a known markup structure Separation of logic and content is just good sense Performance Fewer manipulations of DOM tree Less time spent rendering 61

61 View Instantiation Using declarative layer <!-- the root view, usually body --> <body class="ad-root-view"> <!-- the scrollview --> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" style="left: 20px; top: 20px; right: 20px; bottom: 20px;"> <!-- the hosting layer --> <div class="hosting-layer"> <!-- scrollable content --> </div> </div> </body> 62

62 View Instantiation Using declarative layer <!-- the root view, usually body --> <body class="ad-root-view"> <!-- the scrollview --> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" style="left: 20px; top: 20px; right: 20px; bottom: 20px;"> <!-- the hosting layer --> <div class="hosting-layer"> <!-- scrollable content --> </div> </div> </body> 63

63 View Instantiation Using declarative layer <!-- the root view, usually body --> <body class="ad-root-view"> <!-- the scrollview --> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" style="left: 20px; top: 20px; right: 20px; bottom: 20px;"> <!-- the hosting layer --> <div class="hosting-layer"> <!-- scrollable content --> </div> </div> </body> 64

64 View Instantiation Using declarative layer <!-- the root view, usually body --> <body class="ad-root-view"> <!-- the scrollview --> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" style="left: 20px; top: 20px; right: 20px; bottom: 20px;"> <!-- the hosting layer --> <div class="hosting-layer"> <!-- scrollable content --> </div> </div> </body> 65

65 View Instantiation Using declarative layer <!-- the root view, usually body --> <body class="ad-root-view"> <!-- the scrollview --> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" style="left: 20px; top: 20px; right: 20px; bottom: 20px;"> <!-- the hosting layer --> <div class="hosting-layer"> <!-- scrollable content --> </div> </div> </body> 66

66 Views 67

67 Controls 68

68 Controls ADControl Subclass of ADView Provide advanced and automatic touch tracking Extends built-in touch events with more granularity 69

69 Extended Touch Events Mouse events Mouse events are relative to a target element mouseover mouseout mousemove mousedown mouseup click 70

70 Extended Touch Events Base touch events Built-in touch events provide raw touches touchstart touchmove touchend Tracking touches relative to a given element is hard 71

71 Extended Touch Events iad JS control events Controls analyze raw touches and trigger additional touch events controltouchdragenter controltouchdragexit controltouchupinside and more 72

72 Related Session Adding Touch and Gesture Detection to Web Pages on iphone OS Nob Hill Wednesday 2:00PM 73

73 Actions Using DOM events UIKit s action-target mechanism is one-to-one Model in web development is one-to-many with DOM events A controlvaluechange is dispatched when a control value changes 74

74 DOM Event Handling slider.addeventlistener('controlvaluechange', handler, false); User drags the slider and a controlvaluechange event fires on slider handler is a function? handler is an object? callback is handler() context object is window callback = handler.handleevent() context = handler Best Practice 75

75 Control States Selected Enabled Highlighted Synchronized with touch tracking State is reflected in CSS 76

76 Building a Custom Control Markup <div class="ad-control my-custom-control"></div> Style /* default state for control */.ad-control.my-custom-control { background-color: white; color: red; } /* highlighted state for control */.ad-page-control.my-custom-control.highlighted { background-color: red; color: white; } 77

77 Code Sample 78

78 79

79 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 80

80 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 81

81 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 82

82 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 83

83 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 84

84 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 85

85 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 86

86 Layout /* size the scroll view */.ad-scroll-view { width: 320px; height: 421px; } /* position and size the page control */.ad-page-control { top: 422px; width: 320px; height: 38px; } 87

87 Layout /* size the scroll view */.ad-scroll-view { width: 320px; height: 421px; } /* position and size the page control */.ad-page-control { top: 422px; width: 320px; height: 38px; } 88

88 Scrollable Content Layout /* explicitly size the hosting layer */.hosting-layer { width: 1280px; padding-left: 16px; } /* amount of x spacing between images */.hosting-layer > img { margin-right: 28px; } /* no margin for last image */.hosting-layer > img:last-of-type { margin-right: 0; } 89

89 Scrollable Content Layout /* explicitly size the hosting layer */.hosting-layer { width: 1280px; padding-left: 16px; } /* amount of x spacing between images */.hosting-layer > img { margin-right: 28px; } /* no margin for last image */.hosting-layer > img:last-of-type { margin-right: 0; } 90

90 Scrollable Content Layout /* explicitly size the hosting layer */.hosting-layer { width: 1280px; padding-left: 16px; } /* amount of x spacing between images */.hosting-layer > img { margin-right: 28px; } /* no margin for last image */.hosting-layer > img:last-of-type { margin-right: 0; } 91

91 Controller var controller = {}; controller.init = function () { // get a reference to our page control this.pagecontrol = ADRootView.sharedRoot.pageControls[0]; // get a reference to our scroll view this.scrollview = ADRootView.sharedRoot.scrollViews[0]; // wire up the scroll view delegate to be our controller this.scrollview.delegate = this; }; function init () { // init our controller controller.init(); } // call init() as soon as the page is fully loaded window.addeventlistener('domcontentloaded', init, false); 92

92 Controller var controller = {}; controller.init = function () { // get a reference to our page control this.pagecontrol = ADRootView.sharedRoot.pageControls[0]; // get a reference to our scroll view this.scrollview = ADRootView.sharedRoot.scrollViews[0]; // wire up the scroll view delegate to be our controller this.scrollview.delegate = this; }; function init () { // init our controller controller.init(); } // call init() as soon as the page is fully loaded window.addeventlistener('domcontentloaded', init, false); 93

93 Controller var controller = {}; controller.init = function () { // get a reference to our page control this.pagecontrol = ADRootView.sharedRoot.pageControls[0]; // get a reference to our scroll view this.scrollview = ADRootView.sharedRoot.scrollViews[0]; // wire up the scroll view delegate to be our controller this.scrollview.delegate = this; }; function init () { // init our controller controller.init(); } // call init() as soon as the page is fully loaded window.addeventlistener('domcontentloaded', init, false); 94

94 Controller var controller = {}; controller.init = function () { // get a reference to our page control this.pagecontrol = ADRootView.sharedRoot.pageControls[0]; // get a reference to our scroll view this.scrollview = ADRootView.sharedRoot.scrollViews[0]; // wire up the scroll view delegate to be our controller this.scrollview.delegate = this; }; function init () { // init our controller controller.init(); } // call init() as soon as the page is fully loaded window.addeventlistener('domcontentloaded', init, false); 95

95 Controller var controller = {}; controller.init = function () { // get a reference to our page control this.pagecontrol = ADRootView.sharedRoot.pageControls[0]; // get a reference to our scroll view this.scrollview = ADRootView.sharedRoot.scrollViews[0]; // wire up the scroll view delegate to be our controller this.scrollview.delegate = this; }; function init () { // init our controller controller.init(); } // call init() as soon as the page is fully loaded window.addeventlistener('domcontentloaded', init, false); 96

96 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 97

97 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 98

98 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 99

99 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 100

100 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 101

101 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 102

102 Page Control Event Handling <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> controller.pagecontrolvaluechanged = function (event) { // get new scroll view content offset from page control s current page var x = this.pagecontrol.currentpage * this.scrollview.size.width; // update the scroll view s content offset with an animation this.scrollview.setcontentoffsetanimated(new ADPoint(x, 0), true); }; 103

103 Page Control Event Handling <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> controller.pagecontrolvaluechanged = function (event) { // get new scroll view content offset from page control s current page var x = this.pagecontrol.currentpage * this.scrollview.size.width; // update the scroll view s content offset with an animation this.scrollview.setcontentoffsetanimated(new ADPoint(x, 0), true); }; 104

104 Page Control Event Handling <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> controller.pagecontrolvaluechanged = function (event) { // get new scroll view content offset from page control s current page var x = this.pagecontrol.currentpage * this.scrollview.size.width; // update the scroll view s content offset with an animation this.scrollview.setcontentoffsetanimated(new ADPoint(x, 0), true); }; 105

105 106

106 Summary Views and controls Two techniques Programmatic using the JS APIs Declarative using strictly HTML & CSS There s more 107

107 Scroll Views Toolbars Search Bars Page Controls Flow Views Sliders Switches Progress Views Picker Views Navigation Bars Tab Bars Buttons Rating Controls Carousel Views Table Views Segmented Controls 108

108 Agenda Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 109

109 Working with View Controllers ADViewController 110

110 Modular Architecture Screen One Photos Top Screen Menu Screen Two Maps 111

111 Modular Architecture Performance considerations Loading too much initial content strains the network Too many elements in the tree bogs down rendering performance 112

112 Incremental Download 113

113 Incremental Display 114

114 View Controllers Modular architecture Abstract loading of a number of resources Add and remove views as needed 115

115 Anatomy of a View Controller Bundle screen resources View Controller Programming logic Content View View content CSS Styles View layout Images 116

116 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 117

117 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 118

118 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 119

119 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 120

120 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 121

121 images/stig1.jpg images/stig3.jpg views/menu.html css/menu.css images/stig2.jpg viewcontrollerprogressloadingrequiredfiles viewcontrollerwillloadrequiredfiles viewcontrollerdidloadrequiredfiles contentviewdidload viewdidload Loading Delegate 122

122 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 123

123 View Controller Unique Identifier The id property Uniquely identifies a view controller among all others ADViewController.instances.menu; Eases CSS matching contentview uses identifier as-is for its id attribute view uses identifier with -container suffix for its id attribute 124

124 Declarative Features 125

125 More Convenience 126

126 View Controllers Common Programming Tasks Obtaining references to objects in the content view Responding to user interaction triggered in content view Transitioning between screens 127

127 Outlets Automatically reference any view or element in content view <div ad-outlet="title"></div> Store references in outlets property this.outlets.title 128

128 Actions Automatically register a callback in the context of the view s controller <div ad-action="playaudio"></div> MyController.prototype.playAudio() 129

129 Transitions Automatically trigger transition to new view controller by its id <div ad-transitions-to="maps"></div> Abstracts loading and removing views in one synchronized transaction 130

130 Summary View controllers Automatic loading of screen resources bundle Incremental screen display with automated transitions Standardized common coding tasks More declarative features Less code, fewer common errors 131

131 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 132

132 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 133

133 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 134

134 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 135

135 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 136

136 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 137

137 Rich Media Mini Apps 138

138 100% Web Standards 139

139 140

140 141

141 More Information Vicki Murley Safari Technologies Evangelist Download iaddeveloper Package Documentation iad JS Reference Library Apple Developer Forums 142

142 Related Sessions iad Creating Content with iad JS, Part I Integrating Ads with iad (Repeat) Marina Thursday 9:00AM Pacific Heights Friday 9:00AM 143

143 Related Sessions Web technologies Delivering Audio and Video Using Web Standards, Part I Delivering Audio and Video Using Web Standards, Part 2 Nob Hill Friday 10:15AM Nob Hill Friday 11:30AM CSS Effects, Part I: UI Elements and Navigation CSS Effects, Part 2: Galleries and 3D Effects Adding Touch and Gesture Detection to Web Pages on iphone OS Marina Tuesday 3:15PM Marina Tuesday 4:30PM Nob Hill Wednesday 2:00PM 144

144 Labs Safari on iphone OS Lab Internet & Web Lab B Thursday 2:00PM 145

145 Q&A 146

146 147

147 148

Creating Extensions for Safari

Creating Extensions for Safari Creating Extensions for Safari Part One Timothy Hatcher Safari and WebKit Engineer 2 3 HTML5 CSS3 JavaScript Native Code 4 Cross Platform Secure Crashes 5 What You ll Learn When to make a Safari Extension

More information

Improving the Accessibility and Usability of Complex Web Applications

Improving the Accessibility and Usability of Complex Web Applications Media #WWDC14 Improving the Accessibility and Usability of Complex Web Applications Session 516 Jesse Bunch Productivity Engineering 2014 Apple Inc. All rights reserved. Redistribution or public display

More information

Sam Weinig Safari and WebKit Engineer. Chris Marrin Safari and WebKit Engineer

Sam Weinig Safari and WebKit Engineer. Chris Marrin Safari and WebKit Engineer Sam Weinig Safari and WebKit Engineer Chris Marrin Safari and WebKit Engineer 2 3 4 5 Simple presentation of complex data 6 Graphs can be interactive California County: San Francisco Population: 845,559

More information

Touch Forward. Bill Fisher. #touchfwd. Developing Awesome Cross-Browser Touch

Touch Forward. Bill Fisher. #touchfwd. Developing Awesome Cross-Browser Touch Touch Forward Developing Awesome Cross-Browser Touch Interactions Bill Fisher @fisherwebdev #touchfwd Super F*cking Important yeah, it s important. http://commons.wikimedia.org/wiki/file:071228_human_hands.jpg

More information

UI Course HTML: (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) Introduction. The World Wide Web (WWW) and history of HTML

UI Course HTML: (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) Introduction. The World Wide Web (WWW) and history of HTML UI Course (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) HTML: Introduction The World Wide Web (WWW) and history of HTML Hypertext and Hypertext Markup Language Why HTML Prerequisites Objective

More information

Building Watch Apps #WWDC15. Featured. Session 108. Neil Desai watchos Engineer

Building Watch Apps #WWDC15. Featured. Session 108. Neil Desai watchos Engineer Featured #WWDC15 Building Watch Apps Session 108 Neil Desai watchos Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Agenda

More information

CS193X: Web Programming Fundamentals

CS193X: Web Programming Fundamentals CS193X: Web Programming Fundamentals Spring 2017 Victoria Kirst (vrk@stanford.edu) Today's schedule Today: - Keyboard events - Mobile events - Simple CSS animations - Victoria's office hours once again

More information

READSPEAKER ENTERPRISE HIGHLIGHTING 2.5

READSPEAKER ENTERPRISE HIGHLIGHTING 2.5 READSPEAKER ENTERPRISE HIGHLIGHTING 2.5 Advanced Skinning Guide Introduction The graphical user interface of ReadSpeaker Enterprise Highlighting is built with standard web technologies, Hypertext Markup

More information

Hell is other browsers - Sartre. The touch events. Peter-Paul Koch (ppk) WebExpo, 24 September 2010

Hell is other browsers - Sartre. The touch events. Peter-Paul Koch (ppk)     WebExpo, 24 September 2010 Hell is other browsers - Sartre The touch events Peter-Paul Koch (ppk) http://quirksmode.org http://twitter.com/ppk WebExpo, 24 September 2010 The desktop web Boring! - Only five browsers with only one

More information

Mastering UIKit on tvos

Mastering UIKit on tvos App Frameworks #WWDC16 Mastering UIKit on tvos Session 210 Justin Voss UIKit Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from

More information

itunes Extras/iTunes LP Development: TuneKit Programming Guide v1.0

itunes Extras/iTunes LP Development: TuneKit Programming Guide v1.0 itunes Extras/iTunes LP Development page 1 itunes Extras/iTunes LP Development: apple 11-18-2009 itunes Extras/iTunes LP Development page 2 Contents TuneKit Reference 3 TKController 3 View 3 Outlets 3

More information

Course Details. Skills Gained. Who Can Benefit. Prerequisites. View Online URL:

Course Details. Skills Gained. Who Can Benefit. Prerequisites. View Online URL: Specialized - Mastering jquery Code: Lengt h: URL: TT4665 4 days View Online Mastering jquery provides an introduction to and experience working with the JavaScript programming language in the environment

More information

Introducing the Modern WebKit API

Introducing the Modern WebKit API Frameworks #WWDC14 Introducing the Modern WebKit API Session 206 Anders Carlsson Safari and WebKit Engineer 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Write a Touch-friendly HTML5 App. Hongbo Min, Intel Junmin Zhu, Intel Yongsheng Zhu, Intel

Write a Touch-friendly HTML5 App. Hongbo Min, Intel Junmin Zhu, Intel Yongsheng Zhu, Intel Write a Touch-friendly HTML5 App Hongbo Min, Intel Junmin Zhu, Intel Yongsheng Zhu, Intel Agenda Background Touch vs. Mouse Part I: UI Layout Part II: Event Handling Touch in HTML5 Framework Q/A 2 Background

More information

Course 20480: Programming in HTML5 with JavaScript and CSS3

Course 20480: Programming in HTML5 with JavaScript and CSS3 Course 20480: Programming in HTML5 with JavaScript and CSS3 Overview About this course This course provides an introduction to HTML5, CSS3, and JavaScript. This course helps students gain basic HTML5/CSS3/JavaScript

More information

COURSE 20480B: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3

COURSE 20480B: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3 ABOUT THIS COURSE This course provides an introduction to HTML5, CSS3, and JavaScript. This course helps students gain basic HTML5/CSS3/JavaScript programming skills. This course is an entry point into

More information

Quick Interaction Techniques for watchos

Quick Interaction Techniques for watchos App Frameworks #WWDC16 Quick Interaction Techniques for watchos Session 211 Tom Witkin watchos Engineer Miguel Sanchez watchos Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display

More information

729G26 Interaction Programming. Lecture 4

729G26 Interaction Programming. Lecture 4 729G26 Interaction Programming Lecture 4 Lecture overview jquery - write less, do more Capturing events using jquery Manipulating the DOM, attributes and content with jquery Animation with jquery Describing

More information

This course is designed for web developers that want to learn HTML5, CSS3, JavaScript and jquery.

This course is designed for web developers that want to learn HTML5, CSS3, JavaScript and jquery. HTML5/CSS3/JavaScript Programming Course Summary Description This class is designed for students that have experience with basic HTML concepts that wish to learn about HTML Version 5, Cascading Style Sheets

More information

Programming in HTML5 with JavaScript and CSS3

Programming in HTML5 with JavaScript and CSS3 Programming in HTML5 with JavaScript and CSS3 20480B; 5 days, Instructor-led Course Description This course provides an introduction to HTML5, CSS3, and JavaScript. This course helps students gain basic

More information

v0.9.3 Tim Neil Director, Application Platform & Tools Product

v0.9.3 Tim Neil Director, Application Platform & Tools Product v0.9.3 Tim Neil Director, Application Platform & Tools Product Management @brcewane Framework Goals Incubation project to experiment with HTML5 UI Contribute learning's to jquerymobile, Sencha, Dojo Provides

More information

5/19/2015. Objectives. JavaScript, Sixth Edition. Using Touch Events and Pointer Events. Creating a Drag-and Drop Application with Mouse Events

5/19/2015. Objectives. JavaScript, Sixth Edition. Using Touch Events and Pointer Events. Creating a Drag-and Drop Application with Mouse Events Objectives JavaScript, Sixth Edition Chapter 10 Programming for Touchscreens and Mobile Devices When you complete this chapter, you will be able to: Integrate mouse, touch, and pointer events into a web

More information

COURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3

COURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3 COURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3 MODULE 1: OVERVIEW OF HTML AND CSS This module provides an overview of HTML and CSS, and describes how to use Visual Studio 2012

More information

What s New in Xcode App Signing

What s New in Xcode App Signing Developer Tools #WWDC16 What s New in Xcode App Signing Developing and distributing Session 401 Joshua Pennington Tools Engineering Manager Itai Rom Tools Engineer 2016 Apple Inc. All rights reserved.

More information

Introduction. Part I: jquery API 1. Chapter 1: Introduction to jquery 3

Introduction. Part I: jquery API 1. Chapter 1: Introduction to jquery 3 Introduction xix Part I: jquery API 1 Chapter 1: Introduction to jquery 3 What Does jquery Do for Me? 4 Who Develops jquery? 5 Obtaining jquery 5 Installing jquery 5 Programming Conventions 8 XHTML and

More information

Programming in HTML5 with JavaScript and CSS3

Programming in HTML5 with JavaScript and CSS3 20480 - Programming in HTML5 with JavaScript and CSS3 Duration: 5 days Course Price: $2,975 Software Assurance Eligible Course Description Course Overview This training course provides an introduction

More information

Advanced Development with the ArcGIS API for JavaScript. Jeremy Bartley, Kelly Hutchins, Derek Swingley

Advanced Development with the ArcGIS API for JavaScript. Jeremy Bartley, Kelly Hutchins, Derek Swingley Advanced Development with the ArcGIS API for JavaScript Jeremy Bartley, Kelly Hutchins, Derek Swingley Agenda FeatureLayer esri.request and Identity Manager OO JS Building your first Dijit Popups Working

More information

What's New in UIKit Dynamics and Visual Effects Session 229

What's New in UIKit Dynamics and Visual Effects Session 229 App Frameworks #WWDC15 What's New in UIKit Dynamics and Visual Effects Session 229 Michael Turner UIKit Engineer David Duncan UIKit Engineer 2015 Apple Inc. All rights reserved. Redistribution or public

More information

What s New in XAML Q Release

What s New in XAML Q Release facebook.com/telerik @telerik Today s session will be recorded and available 24/7 on http://tv.telerik.com What s New in XAML Q3 2013 Release Roadmap for Today Introduction and Housekeeping New Controls

More information

Here is the design that I created in response to the user feedback.

Here is the design that I created in response to the user feedback. Mobile Creative Application Development Assignment 2 Report Design When designing my application, I used my original proposal as a rough guide as to how to arrange each element. The original idea was to

More information

What s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer

What s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer App Frameworks #WWDC16 What s New in tvos Session 206 Hans Kim tvos Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Welcome

More information

Building Your own Widget with ArcGIS API for JavaScript

Building Your own Widget with ArcGIS API for JavaScript Building Your own Widget with ArcGIS API for JavaScript Matt Driscoll @driskull JC Franco @arfncode Agenda About Widgets Prerequisites Widget framework Theming DO IT! Tips & tricks About Widgets What?

More information

Table of contents. Sliding Panels DMXzone.com

Table of contents. Sliding Panels DMXzone.com Table of contents Table of contents... 1 About Sliding Panels... 2 Features in Detail... 3 Before you begin... 12 The Basics: Creating Simple Sliding Panels... 13 Advanced: Dynamic Sliding Panels... 20

More information

ITP 342 Mobile App Dev. Interface Fun

ITP 342 Mobile App Dev. Interface Fun ITP 342 Mobile App Dev Interface Fun Human Interface Guidelines ios Human Interface Guidelines https://developer.apple.com/ library/ios/documentation/ userexperience/conceptual/ MobileHIG/index.html 2

More information

Mastering Xcode for iphone OS Development Part 2. Marc Verstaen Sr. Manager, iphone Tools

Mastering Xcode for iphone OS Development Part 2. Marc Verstaen Sr. Manager, iphone Tools Mastering Xcode for iphone OS Development Part 2 Marc Verstaen Sr. Manager, iphone Tools 2 Tale of Two Sessions Part 1: Orientation: Tour of complete development cycle Part 2: Mastery: Details of several

More information

Fundamentals of Web Technologies. Agenda: CSS Layout (Box Model) CSS Layout: Box Model. All HTML elements can be considered as a box or a container

Fundamentals of Web Technologies. Agenda: CSS Layout (Box Model) CSS Layout: Box Model. All HTML elements can be considered as a box or a container ITU 07204: Fundamentals of Web Technologies Lecture 6: CSS Layouts (Intro) Dr. Lupiana, D FCIM, Institute of Finance Management Semester 2 Agenda: CSS Layout (Box Model) 2 CSS Layout: Box Model All HTML

More information

Web App Vs Web Site. Some tricks of the trade. Laurent Technical Director, BlackBerry Web Platform

Web App Vs Web Site. Some tricks of the trade. Laurent Technical Director, BlackBerry Web Platform Web App Vs Web Site Some tricks of the trade Laurent Hasson @ldhasson, lhasson@rim.com Technical Director, BlackBerry Web Platform 2012-05-09 Web Apps Vs. Web Sites 1 INTRODUCTION 2012-05-09 Web Apps Vs.

More information

JSN EasySlider Configuration Manual

JSN EasySlider Configuration Manual JSN EasySlider Configuration Manual Introduction Product Overview JSN EasySlider JSN EasySlider is the cutting-edge way to present content on website: Informative - Impressive - Interactive. It helps you

More information

20480C: Programming in HTML5 with JavaScript and CSS3. Course Code: 20480C; Duration: 5 days; Instructor-led. JavaScript code.

20480C: Programming in HTML5 with JavaScript and CSS3. Course Code: 20480C; Duration: 5 days; Instructor-led. JavaScript code. 20480C: Programming in HTML5 with JavaScript and CSS3 Course Code: 20480C; Duration: 5 days; Instructor-led WHAT YOU WILL LEARN This course provides an introduction to HTML5, CSS3, and JavaScript. This

More information

JQUERYUI - SORTABLE. axis This option indicates an axis of movement "x" is horizontal, "y" is vertical. By default its value is false.

JQUERYUI - SORTABLE. axis This option indicates an axis of movement x is horizontal, y is vertical. By default its value is false. JQUERYUI - SORTABLE http://www.tutorialspoint.com/jqueryui/jqueryui_sortable.htm Copyright tutorialspoint.com jqueryui provides sortable method to reorder elements in list or grid using the mouse. This

More information

Using HTML5 Offline Storage. Brady Eidson Safari and WebKit Engineer

Using HTML5 Offline Storage. Brady Eidson Safari and WebKit Engineer Using HTML5 Offline Storage Brady Eidson Safari and WebKit Engineer 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 So what can I do without the cloud? 22 What You ll Learn Make apps accessible offline

More information

New UIKit Support for International User Interfaces

New UIKit Support for International User Interfaces App Frameworks #WWDC15 New UIKit Support for International User Interfaces Session 222 Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization Software Engineer Paul Borokhov

More information

ITP 342 Mobile App Dev. Interface Components

ITP 342 Mobile App Dev. Interface Components ITP 342 Mobile App Dev Interface Components Human Interface Guidelines ios Human Interface Guidelines (HIG) https://developer.apple.com/ library/ios/documentation/us erexperience/conceptual/m obilehig/index.html

More information

Developing Web Applications for Smartphones with IBM WebSphere Portlet Factory 7.0

Developing Web Applications for Smartphones with IBM WebSphere Portlet Factory 7.0 Developing Web Applications for Smartphones with IBM WebSphere Portlet Factory 7.0 WebSphere Portlet Factory Development Team 6 September 2010 Copyright International Business Machines Corporation 2010.

More information

Using CSS for page layout

Using CSS for page layout Using CSS for page layout Advantages: Greater typographic control Style is separate from structure Potentially smaller documents Easier site maintenance Increased page layout control Increased accessibility

More information

Mobile Application Development

Mobile Application Development Android Native Application Development Mobile Application Development 1. Android Framework and Android Studio b. Android Software Layers c. Android Libraries d. Components of an Android Application e.

More information

Come and Get Excited about Azure Mobile Services and Xamarin.Forms

Come and Get Excited about Azure Mobile Services and Xamarin.Forms Come and Get Excited about Azure Mobile Services and A story about Azure Mobile Services, SQL Azure and Xamarin Presented By: Fabian G. Williams About the Speaker Fabian Williams, MCSD, MCDBa, MCSE SharePoint

More information

Index. Boolean value, 282

Index. Boolean value, 282 Index A AJAX events global level ajaxcomplete, 317 ajaxerror, 316 ajaxsend, 316 ajaxstart, 316 ajaxstop, 317 ajaxsuccess, 316 order of triggering code implementation, 317 display list, 321 flowchart, 322

More information

React + React Native. Based on material by Danilo Filgueira

React + React Native. Based on material by Danilo Filgueira React + React Native Based on material by Danilo Filgueira Prerequisites JS and ES6 HTML and CSS NPM/YARN and NODE React A Javascript library for creating reactive and composable UI components Whenever

More information

Full Stack Web Developer

Full Stack Web Developer Full Stack Web Developer Course Contents: Introduction to Web Development HTML5 and CSS3 Introduction to HTML5 Why HTML5 Benefits Of HTML5 over HTML HTML 5 for Making Dynamic Page HTML5 for making Graphics

More information

An Overview of. Eric Bollens ebollens AT ucla.edu Mobile Web Framework Architect UCLA Office of Information Technology

An Overview of. Eric Bollens ebollens AT ucla.edu Mobile Web Framework Architect UCLA Office of Information Technology An Overview of Eric Bollens ebollens AT ucla.edu Mobile Web Framework Architect UCLA Office of Information Technology August 23, 2011 1. Design Principles 2. Architectural Patterns 3. Building for Degradation

More information

Calendar Management A Demonstration Application of TopBraid Live

Calendar Management A Demonstration Application of TopBraid Live Brief: Calendar Management Calendar Management A Demonstration of TopBraid Live What you will learn in this Brief: Rapid Semantic Building Full life cycle support from model to app Ease of building User

More information

Fundamentals of Website Development

Fundamentals of Website Development Fundamentals of Website Development CSC 2320, Fall 2015 The Department of Computer Science In this chapter History of HTML HTML 5-2- 1 The birth of HTML HTML Blows and standardization -3- -4-2 HTML 4.0

More information

CSS. Shan-Hung Wu CS, NTHU

CSS. Shan-Hung Wu CS, NTHU CSS Shan-Hung Wu CS, NTHU CSS Zen Garden 2 Outline The Basics Selectors Layout Stacking Order 3 Outline The Basics Selectors Layout Stacking Order 4 Grammar selector { property: value; 5 Example /* for

More information

20480B: Programming in HTML5 with JavaScript and CSS3

20480B: Programming in HTML5 with JavaScript and CSS3 20480B: Programming in HTML5 with JavaScript and CSS3 Course Details Course Code: Duration: Notes: 20480B 5 days This course syllabus should be used to determine whether the course is appropriate for the

More information

Getting started with Convertigo Mobilizer

Getting started with Convertigo Mobilizer Getting started with Convertigo Mobilizer First Sencha-based project tutorial CEMS 6.0.0 TABLE OF CONTENTS Convertigo Mobilizer overview...1 Introducing Convertigo Mobilizer... 1-1 Convertigo Mobilizer

More information

Copyright 2014, Oracle and/or its affiliates. All rights reserved.

Copyright 2014, Oracle and/or its affiliates. All rights reserved. 1 Introduction to the Oracle Mobile Development Platform Dana Singleterry Product Management Oracle Development Tools Global Installed Base: PCs vs Mobile Devices 3 Mobile Enterprise Challenges In Pursuit

More information

20480B - Version: 1. Programming in HTML5 with JavaScript and CSS3

20480B - Version: 1. Programming in HTML5 with JavaScript and CSS3 20480B - Version: 1 Programming in HTML5 with JavaScript and CSS3 Programming in HTML5 with JavaScript and CSS3 20480B - Version: 1 5 days Course Description: This course provides an introduction to HTML5,

More information

Telerik Test Studio. Web/Desktop Testing. Software Quality Assurance Telerik Software Academy

Telerik Test Studio. Web/Desktop Testing. Software Quality Assurance Telerik Software Academy Telerik Test Studio Web/Desktop Testing Software Quality Assurance Telerik Software Academy http://academy.telerik.com The Lectors Iliyan Panchev Senior QA Engineer@ DevCloud Testing & Test Studio Quality

More information

Essentials of Developing Windows Store Apps Using HTML5 and JavaScript

Essentials of Developing Windows Store Apps Using HTML5 and JavaScript Essentials of Developing Windows Store Apps Using HTML5 and JavaScript Course 20481A; 5 Days, Instructor-led Course Description In this course, students will learn essential programming skills and techniques

More information

Living through Flash to ipad/html5 Conversion and Development

Living through Flash to ipad/html5 Conversion and Development Living through Flash to ipad/html5 Conversion and Development Dave Goodman SoftAssist, Inc. 610.265.8484 ext 14 dgood@softassist.com www.softassist.com The Issue Your Courses How do we get from here to

More information

Contents FORMAT 3. Specifications STATIC ADVERTISING 4. Interstitial HTML5 ADVERTISING 5-12

Contents FORMAT 3. Specifications STATIC ADVERTISING 4. Interstitial HTML5 ADVERTISING 5-12 Advertising specs Contents FORMAT 3 Specifications STATIC ADVERTISING 4 Interstitial HTML5 ADVERTISING 5-12 Interstitial Responsive Technical info Testing Environment Quality assurance Best practice DESIGN

More information

JavaScript Programming

JavaScript Programming JavaScript Programming Course ISI-1337B - 5 Days - Instructor-led, Hands on Introduction Today, JavaScript is used in almost 90% of all websites, including the most heavilytrafficked sites like Google,

More information

Advanced Cocoa Text Tips and Tricks. Aki Inoue Cocoa Engineer

Advanced Cocoa Text Tips and Tricks. Aki Inoue Cocoa Engineer Advanced Cocoa Text Tips and Tricks Aki Inoue Cocoa Engineer 2 Introduction Only on Mac OS Diving deeper Understanding the layout process Getting comfortable with extending and customizing base functionalities

More information

JQUERYUI - WIDGET FACTORY

JQUERYUI - WIDGET FACTORY JQUERYUI - WIDGET FACTORY http://www.tutorialspoint.com/jqueryui/jqueryui_widgetfactory.htm Copyright tutorialspoint.com Earlier, the only way to write custom controls in jquery was to extend the $.fn

More information

Enhancing your apps for the next dimension of touch

Enhancing your apps for the next dimension of touch App Frameworks #WWDC16 A Peek at 3D Touch Enhancing your apps for the next dimension of touch Session 228 Tyler Fox UIKit Frameworks Engineer Peter Hajas UIKit Frameworks Engineer 2016 Apple Inc. All rights

More information

Lesson 1: Hello ios! 1

Lesson 1: Hello ios! 1 Contents Introduction xxv Lesson 1: Hello ios! 1 ios Developer Essentials 1 A Suitable Mac 1 A Device for Testing 2 Device Differences 2 An ios Developer Account 4 The Official ios SDK 6 The Typical App

More information

Varargs Training & Software Development Centre Private Limited, Module: HTML5, CSS3 & JavaScript

Varargs Training & Software Development Centre Private Limited, Module: HTML5, CSS3 & JavaScript PHP Curriculum Module: HTML5, CSS3 & JavaScript Introduction to the Web o Explain the evolution of HTML o Explain the page structure used by HTML o List the drawbacks in HTML 4 and XHTML o List the new

More information

SEEM4570 System Design and Implementation. Lecture 3 Cordova and jquery

SEEM4570 System Design and Implementation. Lecture 3 Cordova and jquery SEEM4570 System Design and Implementation Lecture 3 Cordova and jquery Prepare a Cordova Project Assume you have installed all components successfully and initialized a project. E.g. follow Lecture Note

More information

Welcome to CS50 section! This is Week 10 :(

Welcome to CS50 section! This is Week 10 :( Welcome to CS50 section! This is Week 10 :( This is our last section! Final project dates Official proposals: due this Friday at noon Status report: due Monday, Nov 28 at noon Hackathon: Thursday, Dec

More information

The City Bars App. with. Sencha Touch 2

The City Bars App. with. Sencha Touch 2 The City Bars App with Sencha Touch 2 Sencha Touch A JavaScript framework for building rich mobile apps with web standards http://sencha.com/x/d5 http://sencha.com/x/ed Basically... Get a WebKit-based

More information

Aware IM Version 8.2 Aware IM for Mobile Devices

Aware IM Version 8.2 Aware IM for Mobile Devices Aware IM Version 8.2 Copyright 2002-2018 Awaresoft Pty Ltd CONTENTS Introduction... 3 General Approach... 3 Login... 4 Using Visual Perspectives... 4 Startup Perspective... 4 Application Menu... 5 Using

More information

,

, Weekdays:- 1½ hrs / 3 days Fastrack:- 1½hrs / Day [Classroom and Online] ISO 9001:2015 CERTIFIED ADMEC Multimedia Institute www.admecindia.co.in 9911782350, 9811818122 The jquery Master Course by ADMEC

More information

User Experience: Windows & Views

User Experience: Windows & Views View Controller Programming Guide for ios User Experience: Windows & Views 2011-01-07 Apple Inc. 2011 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval

More information

COMM 2555: Interactive Digital Communication / Spring 2018 Lab 9: Basic layout techniques with CSS

COMM 2555: Interactive Digital Communication / Spring 2018 Lab 9: Basic layout techniques with CSS COMM 2555: Interactive Digital Communication / Spring 2018 Lab 9: Basic layout techniques with CSS Goals Practice working with the CSS box model, positioning and layout Step 1. Create your infrastructure

More information

classjs Documentation

classjs Documentation classjs Documentation Release 1.0 Angelo Dini March 21, 2015 Contents 1 Requirements 3 2 Plugins 5 2.1 Cl.Accordion............................................... 5 2.2 Cl.Autocomplete.............................................

More information

Visual Web Next Design Concepts. Winston Prakash Feb 12, 2008

Visual Web Next Design Concepts. Winston Prakash Feb 12, 2008 Visual Web Next Design Concepts Winston Prakash Feb 12, 2008 Some Notations Used Page - A web page being designed such as HTML, JSP, JSF, PHP etc. Page definition Language (PDL) - Language that used to

More information

Creating a custom gadget using the Finesse JavaScript Library API

Creating a custom gadget using the Finesse JavaScript Library API Creating a custom gadget using the Finesse JavaScript Library API Denise Kwan, Software Engineer @ DevNet Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session 1.

More information

Siteforce Pilot: Best Practices

Siteforce Pilot: Best Practices Siteforce Pilot: Best Practices Getting Started with Siteforce Setup your users as Publishers and Contributors. Siteforce has two distinct types of users First, is your Web Publishers. These are the front

More information

JavaScript and XHTML. Prof. D. Krupesha, PESIT, Bangalore

JavaScript and XHTML. Prof. D. Krupesha, PESIT, Bangalore JavaScript and XHTML Prof. D. Krupesha, PESIT, Bangalore Why is JavaScript Important? It is simple and lots of scripts available in public domain and easy to use. It is used for client-side scripting.

More information

Index. alt, 38, 57 class, 86, 88, 101, 107 href, 24, 51, 57 id, 86 88, 98 overview, 37. src, 37, 57. backend, WordPress, 146, 148

Index. alt, 38, 57 class, 86, 88, 101, 107 href, 24, 51, 57 id, 86 88, 98 overview, 37. src, 37, 57. backend, WordPress, 146, 148 Index Numbers & Symbols (angle brackets), in HTML, 47 : (colon), in CSS, 96 {} (curly brackets), in CSS, 75, 96. (dot), in CSS, 89, 102 # (hash mark), in CSS, 87 88, 99 % (percent) font size, in CSS,

More information

Joomla! extension JSN EasySlider User Manual

Joomla! extension JSN EasySlider User Manual Joomla! extension JSN EasySlider User Manual (for JSN EasySlider 2.0.x) www.facebook.com/joomlashine www.twitter.com/joomlashine www.youtube.com/joomlashine This documentation is release under Creative

More information

Address Book for iphone

Address Book for iphone Address Book for iphone The people s framework Alexandre Aybes iphone Software Engineer 2 3 Address Book for iphone The people s framework Alexandre Aybes iphone Software Engineer 4 What We Will Cover

More information

IN4MATX 133: User Interface Software

IN4MATX 133: User Interface Software IN4MATX 133: User Interface Software Lecture 13: Components in Angular Professor Daniel A. Epstein TA Jamshir Goorabian TA Simion Padurean 1 Notes Important: please put your name/email/id in the readme.txt

More information

HCDE 530: Computational Techniques for HCDE Data Visualization in Web, Part 2

HCDE 530: Computational Techniques for HCDE Data Visualization in Web, Part 2 HCDE 530: Computational Techniques for HCDE Data Visualization in Web, Part 2 David McDonald, Sungsoo (Ray) Hong University of Washington Outline Before we start Download HCDE530_D3_part2.zip in the course

More information

Advanced Dreamweaver CS6

Advanced Dreamweaver CS6 Advanced Dreamweaver CS6 Overview This advanced Dreamweaver CS6 training class teaches you to become more efficient with Dreamweaver by taking advantage of Dreamweaver's more advanced features. After this

More information

lecture 10 UI/UX and Programmatic Design cs : spring 2018

lecture 10 UI/UX and Programmatic Design cs : spring 2018 lecture 10 UI/UX and Programmatic Design cs198-001 : spring 2018 1 Announcements custom app progress form due before lab (~1 minute) will be released after lecture only 2 labs left (both very important)

More information

View Controller Advancements for ios8

View Controller Advancements for ios8 Frameworks #WWDC14 View Controller Advancements for ios8 Session 214 Bruce D. Nilo Manager, UIKit Fundamentals 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without

More information

Chapter 3 Style Sheets: CSS

Chapter 3 Style Sheets: CSS WEB TECHNOLOGIES A COMPUTER SCIENCE PERSPECTIVE JEFFREY C. JACKSON Chapter 3 Style Sheets: CSS 1 Motivation HTML markup can be used to represent Semantics: h1 means that an element is a top-level heading

More information

Creating Complications with ClockKit Session 209

Creating Complications with ClockKit Session 209 App Frameworks #WWDC15 Creating Complications with ClockKit Session 209 Eliza Block watchos Engineer Paul Salzman watchos Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display

More information

The course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments.

The course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments. Web Development WEB101: Web Development Fundamentals using HTML, CSS and JavaScript $2,495.00 5 Days Replay Class Recordings included with this course Upcoming Dates Course Description This 5-day instructor-led

More information

Essentials of Developing Windows Store Apps Using C#

Essentials of Developing Windows Store Apps Using C# Essentials of Developing Windows Store Apps Using C# Course 20484A; 5 Days, Instructor-led Course Description In this course, students will learn essential programming skills and techniques that are required

More information

JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1)

JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1) Technology & Information Management Instructor: Michael Kremer, Ph.D. Class 8 Professional Program: Data Administration and Management JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1) AGENDA

More information

IBM Forms V8.0 Custom Themes IBM Corporation

IBM Forms V8.0 Custom Themes IBM Corporation IBM Forms V8.0 Custom Themes Agenda 2 Overview Class Names How to Use Best Practice Styling Form Items Test Custom CSS Sample Overview 3 To create custom theme you must be familiar with the basic concept

More information

Internet & Web

Internet & Web Safari Visual Effects Guide Internet & Web 2008-11-19 Apple Inc. 2008 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any

More information

Web Programming and Design. MPT Senior Cycle Tutor: Tamara Week 2

Web Programming and Design. MPT Senior Cycle Tutor: Tamara Week 2 Web Programming and Design MPT Senior Cycle Tutor: Tamara Week 2 Plan for the next 4 weeks: Introduction to HTML tags, creating our template file Introduction to CSS and style Introduction to JavaScript

More information

HTML5. HTML5 Introduction. Form Input Types. Semantic Elements. Form Attributes. Form Elements. Month Number Range Search Tel Url Time Week

HTML5. HTML5 Introduction. Form Input Types. Semantic Elements. Form Attributes. Form Elements. Month Number Range Search Tel Url Time Week WEB DESIGNING HTML HTML - Introduction HTML - Elements HTML - Tags HTML - Text HTML - Formatting HTML - Pre HTML - Attributes HTML - Font HTML - Text Links HTML - Comments HTML - Lists HTML - Images HTML

More information

What s New in CloudKit

What s New in CloudKit System Frameworks #WWDC15 What s New in CloudKit Session 704 Olivier Bonnet icloud Client Eric Krugler icloud Server 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

Information Design. Professor Danne Woo! infodesign.dannewoo.com! ARTS 269 Fall 2018 Friday 10:00PM 1:50PM I-Building 212

Information Design. Professor Danne Woo! infodesign.dannewoo.com! ARTS 269 Fall 2018 Friday 10:00PM 1:50PM I-Building 212 Information Design Professor Danne Woo! infodesign.dannewoo.com! ARTS 269 Fall 2018 Friday 10:00PM 1:50PM I-Building 212 Interactive Data Viz Week 8: Data, the Web and Datavisual! Week 9: JavaScript and

More information