yui for control - the ajax...

121
YUI for control freaks Christian Heilmann The Ajax Experience, Boston, MA, Autumn 2008

Upload: trankhuong

Post on 10-Feb-2018

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

YUI for control freaks

Christian Heilmann

The Ajax Experience, Boston, MA, Autumn 2008

Page 2: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Oh, hello there...

Page 3: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

I’m Chris.

Page 4: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

I am a lazy person.

Page 5: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

I prefer doing things once, and do them right instead of

doing them over and over again.

Page 6: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

For this, I need control.

Page 7: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

I like having control.

Page 8: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Remote control

rubber duck

Page 9: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

However, having too much control can be an issue.

Page 10: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 11: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Limitation is good.

Page 12: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Let’s do a quick rewind.

Page 13: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

The Commodore 64

Page 14: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

16 preset colours

resolution 160x200 pixels

4 colours per each 8x8 pixel block

Page 15: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Limitations that inspire different people in different

ways.

Page 16: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 17: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 18: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 19: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 20: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

It is great to have a one size fits all solution.

Page 21: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

... but it can be as cool to have a on-demand set of tools.

Page 22: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

YUI is the latter.

Page 23: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

It brings order to the chaos.

Page 24: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

What chaos?

Page 25: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

JavaScript is a part of a larger world.

Page 26: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Browser

Interaction with other technologies (CSS, Markup)

Interaction with other scripts

Interaction with the backend

Page 27: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Interaction with the operating system.

Interaction with the user (with unknown ability)

Interaction with bad code (a.k.a. ads)

Page 28: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

YUI deals with all of this.

Page 29: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Because it has to – we built it for industrial (Yahoo)

strength.

Page 30: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

The first thing we needed to get are some sensible

constraints.

Page 32: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 33: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

This gave us a defined playground, and we were able

to start tackling the other issues.

Page 34: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

The first thing to tackle before you can even hope to build

interfaces are browser differences in CSS.

Page 35: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

There is no such thing as an “unstyled page”.

Page 36: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

There is no such thing as an “unstyled page”.

Page 37: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 38: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 39: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 40: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 41: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Good luck working around that one.

Page 42: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Unless you use reset.css

http://developer.yahoo.com/yui/reset/

Page 43: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 44: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 45: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 46: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 47: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Starting with a blank canvas

=

good.

Page 48: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

What about typography?

Page 50: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 52: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 53: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Grids gives you an amazingly large amount of options and

layout permutations.

Page 54: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Everybody Duck!

Page 55: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

There will be code

Page 56: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Wouldn’t it be cool to not know when to use which size

of the grid automatically?

Page 57: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

This is where the next YUI gem comes in: DOM.

http://developer.yahoo.com/yui/dom

Page 58: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Using the DOM component, I can read out what happens in

the browser.

Page 59: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

I can get the dimensions of the window, the dimensions of the browser, and the dimensions

of any element in the document – regardless of its

positioning.

Page 60: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Using DOM, I can create a YUI grid that works with all kind of

different browsers sizes.

Page 62: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

YAHOO.example.autoGrid = function(){ var container = YAHOO.util.Dom.get('doc') || YAHOO.util.Dom.get('doc2') || YAHOO.util.Dom.get('doc4') || YAHOO.util.Dom.get('doc3') || YAHOO.util.Dom.get('doc-custom'); if(container){ var sidebar = null; var classes = container.className; if(classes.match(/yui-t[1-3]|yui-left/)){ var sidebar = 'left'; } if(classes.match(/yui-t[4-6]|yui-right/)){ var sidebar = 'right'; } function switchGrid(){ var currentWidth = YAHOO.util.Dom.getViewportWidth();

Page 63: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

if(currentWidth > 950){ container.id = 'doc2'; if(sidebar){ container.className = sidebar === 'left' ? 'yui-t3' : 'yui-t6'; } } if(currentWidth < 950){ container.id = 'doc'; if(sidebar){ container.className = sidebar === 'left' ? 'yui-t2' : 'yui-t5'; } } if(currentWidth < 760){ container.id = 'doc3'; if(sidebar){ container.className = sidebar === 'left' ? 'yui-t1' : 'yui-t4'; } }

Page 64: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

if(currentWidth < 600){ container.id = 'doc3'; container.className = ''; } }; switchGrid(); function throttle(method, scope) { clearTimeout(method._tId); method._tId= setTimeout(function(){ method.call(scope); }, 100); }; YAHOO.util.Event.on(window,'resize',function(){ throttle(YAHOO.example.autoGrid.switchGrid,window); });

}; return { switchGrid:switchGrid };}();

Page 65: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

What about monitoring the size of an element?

Page 66: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 67: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

It can however also render your site impossible to use.

Page 68: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 69: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

var YD = YAHOO.util.Dom; YAHOO.util.Event.onDOMReady(toggleMenu); YAHOO.util.Event.on(window,'resize',function(){ toggleMenu(); }); function toggleMenu(){ var sidebar = YD.getRegion('sb'); var browser = YD.getViewportHeight(); YD.setStyle('sb','position', browser < sidebar.bottom ? 'static' : 'fixed' ); }

Page 70: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

The DOM stepchild: Region

Page 71: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Using region I can find out the dimensions of an element.

Page 72: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

I can also find the region that is big enough to include two

regions, or the one that is the intersection of the two.

Page 73: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

region example

Page 74: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

YAHOO.util.Event.onDOMReady(function(){ var YD = YAHOO.util.Dom; var r1 = YD.getRegion('region-one'); var r2 = YD.getRegion('region-two'); var i = r1.intersect(r2); var u = r1.union(r2); var intersect = document.createElement('div'); document.body.appendChild(intersect); YD.setStyle(intersect,'position','absolute'); YD.setStyle(intersect,'background','#c0c'); YD.setStyle(intersect,'width',i.right-i.left + 'px'); YD.setStyle(intersect,'height',i.bottom-i.top + 'px'); YD.setStyle(intersect,'z-index',100); YD.setXY(intersect,i);

Page 75: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

var union = document.createElement('div'); document.body.appendChild(union); YD.setStyle(union,'position','absolute'); YD.setStyle(union,'background','#000'); YD.setStyle(union,'opacity',.5); YD.setStyle(union,'width',u.right-u.left + 'px'); YD.setStyle(union,'height',u.bottom-u.top + 'px'); YD.setStyle(union,'z-index',90); YD.setXY(union,u); });

Page 76: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

This gives me full control to avoid any overlap!

Page 77: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

What about things the browser does not tell me?

Page 78: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Wouldn’t it be cool to find out when the font is resized?

Page 79: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 81: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

You can detect the font size in several ways:

Page 82: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Include an element with a known size in ems and read its

offsetHeight and offsetWidth in an interval...

Page 83: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

...or use an iframe with em sizing off-screen and subscribe

to its resize event.

Page 84: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Or use the YUI container module anywhere on your

page... :)

Page 85: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

YAHOO.namespace('example.container'); YAHOO.util.Event.onDOMReady(function(){ YAHOO.example.container.module1 = new YAHOO.widget.Panel( 'module1', { close:true, draggable:true, constraintoviewport:true } ); YAHOO.example.container.module1.render(); YAHOO.widget.Module.textResizeEvent.subscribe( function(o){ console.log('Text has been resized!') } ); });

Page 86: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

YAHOO.namespace('example.container'); YAHOO.util.Event.onDOMReady(function(){ YAHOO.example.container.module1 = new YAHOO.widget.Panel( 'module1', { close:true, draggable:true, constraintoviewport:true } ); YAHOO.example.container.module1.render(); YAHOO.widget.Module.textResizeEvent.subscribe( function(o){ console.log('Text has been resized!') } ); });

Page 87: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

This works with one feature of YUI event that is very close to

my heart: Custom Events.

Page 88: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

... which is so cool that all the other big libraries now have it

aswell :)

Page 89: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Custom Events allow you to notify an unknown amount of

listeners about what is happening...

Page 90: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

... sending information not necessarily accessible to them

when it happens.

Page 91: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Every single YUI component has a lot of Custom Events you

can subscribe to.

Page 92: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 93: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Say for example you want to make sure to securely chain

animation sequences...

Page 94: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

//This is the first animation; this one will //fire when the button is clicked. var move = new YAHOO.util.Anim("animator", { left: {from:0, to:75} }, 1); //This is the second animation; it will fire //when the first animation is complete. var changeColor = new YAHOO.util.ColorAnim( "animator", { backgroundColor: {from:"#003366", to:"#ff0000"} }, 1); //Here's the chaining glue: We subscribe to the //first animation's onComplete event, and in //our handler we animate the second animation: move.onComplete.subscribe(function() { changeColor.animate(); });

Page 95: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

//Here we set up our YUI Button and subcribe to //its click event. When clicked, it will //animate the first animation: var start = new YAHOO.widget.Button("startAnim"); start.subscribe("click", function() { //reset the color value to the start so that //the animation can be run multiple times: YAHOO.util.Dom.setStyle("animator", "backgroundColor", "#003366"); move.animate(); });

Page 96: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

//You can also make use of the onStart and onTween //custom events in Animation; here, we'll log all //of changeColor's custom events and peek at their //argument signatures: changeColor.onStart.subscribe(function() { YAHOO.log("changeColor animation is starting.", "info", "example"); }); changeColor.onTween.subscribe(function(s, o) { YAHOO.log("changeColor onTween firing with these arguments: " + YAHOO.lang.dump(o), "info", "example"); }); changeColor.onComplete.subscribe(function(s, o) { YAHOO.log("changeColor onComplete firing with these arguments: " + YAHOO.lang.dump(o), "info", "example"); });

Page 97: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

That is a lot of control!

Page 98: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

{font resizing example}

Page 99: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Knowledge is power.

Page 100: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

This is why YUI comes with a lot of tools to gain knowledge

about what is happening under the hood of your

application.

Page 101: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

YUI logger gives you a cross-browser console to show

values.

Page 102: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 103: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Death to alert()!

Page 104: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

All YUI components come as a debug version which log

everything that is going on to the logger.

Page 105: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

You can even include the logger on the fly with a

bookmarklet.

Page 107: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

If you need even more control, there is the YUI

profiler.

http://developer.yahoo.com/yui/profiler/

Page 108: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 109: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

And the YUI test framework for test driven development.

http://developer.yahoo.com/yui/yuitest/

Page 110: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

If you like even more control...

Page 111: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Then you must be Nicholas Zakas or Dean Edwards!

Page 112: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

On a code level, YUI comes out-of-the-box with

namespacing.

Page 113: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Which – if used correctly – keeps large amounts of code readable and maintainable.

Page 114: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

YAHOO.lang also comes with a lot of validation methods to ensure things are what they

are.

Page 115: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

So how is YUI good for control freaks?

Page 116: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Built on agreed standards

Separated into modules each dealing with one task

Constant reporting of what is going on

Own Debugging environment

Page 117: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

What does the future hold?

Page 119: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,
Page 120: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Include on demand

Multiple sandboxed instances in a page

Modularity on CSS level (per element reset)

Every event is a custom event

Page 121: YUI for control - The Ajax Experienceajaxexperience.techtarget.com/...Heilmann_YUI_for_Control_Freaks.pdf · YUI for control freaks Christian Heilmann The Ajax Experience, Boston,

Christian Heilmann

http://wait-till-i.com

http://scriptingenabled.org

http://twitter.com/codepo8

THANKS!