src/cm/media/js/lib/yui/yui_3.10.3/docs/attribute/attribute-basic-speeddate.html
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
<!DOCTYPE html>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
<html lang="en">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
<head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
    <meta charset="utf-8">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
    <title>Example: Attribute Based Speed Dating</title>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
    <link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
    <link rel="stylesheet" href="../assets/css/main.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    <script src="../../build/yui/yui-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
</head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
<body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
<!--
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
-->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
<div id="doc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    <div id="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        <h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
            <h1>Example: Attribute Based Speed Dating</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    <div class="yui3-g">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        <div class="yui3-u-3-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
            <div id="main">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
                <div class="content"><style type="text/css" scoped>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    #speeddate h1 {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        font-size: 108%;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
        color:#000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        margin-bottom:2em;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    #john {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        margin-bottom:10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    .sd-nametag {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        border:1px solid #000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
        text-align:center;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        width:25em;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        margin:20px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        background-color:#00f;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        border-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        -webkit-border-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        -moz-border-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        box-shadow: 3px 3px 3px #888;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        -moz-box-shadow: 3px 3px 3px #888;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        -webkit-box-shadow: 3px 3px 3px #888;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    .sd-nametag .sd-hd, .sd-nametag .sd-ft {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        padding:5px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        text-align:center;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        font-size:108%;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
        font-weight:900;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
        color:#fff;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    .sd-nametag .sd-hd {    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        border-top-right-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
        border-top-left-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        -moz-border-radius-topright: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        -moz-border-radius-topleft: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
        -webkit-border-top-right-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
        -webkit-border-top-left-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    .sd-nametag .sd-ft {    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
        border-bottom-right-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
        border-bottom-left-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
        -moz-border-radius-bottomright: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        -moz-border-radius-bottomleft: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
        -webkit-border-bottom-right-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        -webkit-border-bottom-left-radius: 10px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    .sd-nametag .sd-bd {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        background-color:#fff;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        padding:1em;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    .sd-nametag .sd-bd .sd-name, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    .sd-nametag .sd-bd .sd-personality {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
        font-size:108%;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
        font-weight:900;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        font-family:monospace;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
        text-decoration:underline;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
        color:#00a;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
    .sd-nametag .sd-bd .sd-personality.sd-max {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
        color:#f00;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
</style>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
<div class="intro">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        This example builds on the <a href="attribute-basic.html">"Basic Configuration" example</a>, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        showing how you can use attribute to model objects in your application.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
        As with the basic example, it is geared towards users who want to create their own classes from 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
        scratch and add attribute support. In most cases you should consider extending the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
        <a href="../base/index.html"><code>Base</code></a> class when you need attribute support, instead 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        of augmenting Attribute directly. <a href="../base/index.html"><code>Base</code></a> does the work described 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        in this example for you, in addition to making it easier for users to extend you class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
    </p>    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
<div class="example">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
    <div id="speeddate">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
    <h1>Speed Dating With Attributes</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
    <div id="john">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
        <button type="button" class="hi">Hi I'm John</button>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
        <button type="button" class="taken" disabled="disabled">I like Jane</button>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
        <div class="shirt"></div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
    <div id="jane">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        <button type="button" disabled="disabled" class="hi">Hey, I'm Jane</button>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        <button type="button" class="upgrade" disabled="disabled">No way!, I save whales too!</button>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
        <button type="button" class="taken" disabled="disabled">I like John</button>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        <div class="shirt"></div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
<script type="text/javascript">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
// Get a new instance of YUI and 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
// load it with the required set of modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
YUI().use("node", "attribute", function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
    // Setup custom class which we want to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
    // add managed attribute support to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
    function SpeedDater(cfg) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        // When constructed, setup the initial attributes for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
        // instance, by calling the addAttrs method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
        var attrs = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
            // Add 3 attributes: name, personality, available
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
            name : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
                writeOnce:true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
            personality : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
                value:50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
            available : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
                value:true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        this.addAttrs(attrs, cfg);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
    // Setup static property to hold attribute config
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
    SpeedDater.NAMETAG = '<div class="sd-nametag"><div class="sd-hd">Hello!</div><div class="sd-bd">I\'m <span class="sd-name">{name}</span> and my PersonalityQuotientIndex is <span class="sd-personality">{personality}</span></div><div class="sd-ft sd-availability">{available}</div></div>';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    SpeedDater.prototype.applyNameTag = function(where) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
        var tokens = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
            name: this.get("name"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
            available: (this.get("available")) ? "I'm still looking" : "Sorry, I'm taken",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
            personality: this.get("personality")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        var str = Y.Lang.sub(SpeedDater.NAMETAG, tokens);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
        this.nameTag = Y.Node.create(str);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        Y.one(where).appendChild(this.nameTag);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
    SpeedDater.prototype.updateNameTag = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
        var taken = (this.get("available")) ? "I'm still looking" : "Sorry, I'm taken";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        var name = this.get("name");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        var personality = this.get("personality");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        this.nameTag.one(".sd-name").set("innerHTML", name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        this.nameTag.one(".sd-availability").set("innerHTML", taken);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        var personalityEl = this.nameTag.one(".sd-personality"); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        personalityEl.set("innerHTML", personality);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        if (personality > 90) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
            personalityEl.addClass("sd-max");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    // Augment custom class with Attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
    Y.augment(SpeedDater, Y.Attribute);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
    var john, jane;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    Y.on("click", function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
        if (!john) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
            // Set both name and personality during construction 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
            john = new SpeedDater({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
                name: "John",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
                personality: 76.43
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
            john.applyNameTag("#john .shirt");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
            Y.one("#jane .hi").set("disabled", false); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
    }, "#john .hi");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
    Y.on("click", function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
        if (!jane) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
            // Set name during construction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
            jane = new SpeedDater({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
                name: "Jane"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
            // Set personality after construction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
            jane.set("personality", 82);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
            jane.applyNameTag("#jane .shirt");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
            Y.all("#jane button").set("disabled", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
            Y.all("#john button").set("disabled", false); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
    }, "#jane .hi");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
    Y.on("click", function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        john.set("available", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
        john.updateNameTag();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
    }, "#john .taken");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
    Y.on("click", function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
        jane.set("available", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
        jane.updateNameTag();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    }, "#jane .taken");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
    Y.on("click", function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        jane.set("personality", 98);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        jane.updateNameTag();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
    }, "#jane .upgrade");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
 });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
<h2>Setting Up a SpeedDater Class</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
<p>In this example, we'll create a custom <code>SpeedDater</code> class, and show how you can use attributes to manage the state for a Speed Dater.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
In the <a href="attribute-event-speeddate.html">"Attribute Event Based Speed Dating" example</a> we'll modify this example to leverage attribute change events.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
<h3>Creating A YUI Instance</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
<p>As with the other attribute <a href="attribute-basic.html">examples</a>, we'll setup our own instance of the YUI object and request the modules we require using the code pattern shown below:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
<pre class="code prettyprint">&lt;script type=&quot;text&#x2F;javascript&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
    &#x2F;&#x2F; Create our local YUI instance, to avoid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
    &#x2F;&#x2F; modifying the global YUI object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
    YUI({...}).use(&quot;attribute&quot;, &quot;node&quot;, ... function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
        &#x2F;&#x2F; Example code is written inside this function,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
        &#x2F;&#x2F; which gets passed our own YUI instance, Y, populated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
        &#x2F;&#x2F; with the modules we asked for (e.g. Y.Attribute, Y.Node etc.)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
<h3>Defining The SpeedDater Class</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
<p>The first step in the example is to create the constructor function for our new class, to which we want to add attribute support. In our example, this class is called <code>SpeedDater</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
We then augment <code>SpeedDater</code> with <code>Y.Attribute</code>, so that it receives all of <code>Attribute&#x27;s</code> methods, in addition to any it may defined itself:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
<pre class="code prettyprint">&#x2F;&#x2F; Setup custom class which we want to add attribute support to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
function SpeedDater(cfg) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
    ...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
&#x2F;&#x2F; Augment custom class with Attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
Y.augment(SpeedDater, Y.Attribute);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
<h3>Adding Attributes</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
We can now set up any attributes we need for <code>SpeedDater</code> using Attribute's <code>addAttrs()</code> method. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
For this example we add 3 attributes - <code>name</code>, <code>personality</code>, and <code>available</code>. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
We provide an default initial <code>value</code> for <code>personality</code> and <code>available</code>, but don't have anything for <code>name</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
As mentioned in the basic example, the same object literal we use to provide the initial value for the attribute can also be used to configure attribute properties such as <code>readOnly</code> or 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
<code>writeOnce</code>, and to define <code>getter</code>, <code>setter</code> and <code>validator</code> methods for the attribute. For <code>name</code>, we configure it to be <code>writeOnce</code>, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
meaning that it's value can be set once by the user, but not modified after that single set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
The default set of attributes which <code>SpeedDater</code> will support is passed to <code>addAttrs</code> to set up the attributes for each instance during construction.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
As mentioned previously, if you expect your class to be extended, <a href="../base/index.html">Base</a> provides a more convenient way for you to define the same attribute configuration statically for your class, so that it can be modified by extended classes. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
Base will take care of isolating the static configuration, so that it isn't modified across instances. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
The complete definition for <code>SpeedDater</code> is shown below:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
<pre class="code prettyprint">&#x2F;&#x2F; Setup custom class which we want to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
&#x2F;&#x2F; add managed attribute support to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
function SpeedDater(cfg) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
    &#x2F;&#x2F; When constructed, setup the initial attributes for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
    &#x2F;&#x2F; instance, by calling the addAttrs method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
    var attrs = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
        &#x2F;&#x2F; Add 3 attributes: name, personality, available
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
        name : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
            writeOnce:true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
        personality : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
            value:50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
        available : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
            value:true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
    this.addAttrs(attrs, cfg);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
SpeedDater.prototype.applyNameTag = function(where) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    &#x2F;&#x2F; Method used to render the visual representation of a 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
    &#x2F;&#x2F; SpeedDater object&#x27;s state (in this case as a name tag)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
SpeedDater.prototype.updateNameTag = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
    &#x2F;&#x2F; Method used to update the rendered state of SpeedDater in the DOM.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
&#x2F;&#x2F; Template to use form the markup    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
SpeedDater.NAMETAG = &quot;&lt;div class=&quot;sd-nametag&quot;&gt;&lt;div class=&quot;sd-hd&quot;&gt;Hello!&lt;&#x2F;div&gt;... &lt;&#x2F;div&gt;&quot;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
&#x2F;&#x2F; Augment custom class with Attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
Y.augment(SpeedDater, Y.Attribute);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
The <code>addAttrs()</code> method, in addition to the default attribute configuration, also accepts an object literal (associative array) of name/value pairs which can be 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
used to over-ride the default initial values of the attributes. This is useful for classes which wish to allow the user the set the value of attributes as part of object 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
construction, as shown by the use of the <code>cfg</code> argument above.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
<h3>Using Attributes</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
<p>Now that we have <code>SpeedDater</code> defined with the set of attributes it supports, we can create multiple instances of <code>SpeedDater</code> defining the initial 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
attribute state for each instance through the constructor. We can also update the instance's attribute state after construction, using the <code>get</code> and 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
<code>set</code> methods defined by Attribute.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
<p>We create a first instance, <code>john</code>, setting up the intial state using Attribute's constructor configuration object support:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
<pre class="code prettyprint">&#x2F;&#x2F; Set both name and personality during construction 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
john = new SpeedDater({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
    name: &quot;John&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
    personality: 76.43
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
<p>For the second instance that we create, <code>jane</code>, we set the value of the personality attribute, after construction:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
<pre class="code prettyprint">&#x2F;&#x2F; Set name during construction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
jane = new SpeedDater({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
    name: &quot;Jane&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
&#x2F;&#x2F; Set personality after construction. The initial value for personality 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
&#x2F;&#x2F; in this case, will be the value defined when the attribute was added 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
&#x2F;&#x2F; using addAttrs (above)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
jane.set(&quot;personality&quot;, 82);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
<p>We render the current attribute state of each instance to the DOM, using the <code>applyNameTag()</code> method defined on SpeedDater's prototype:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
<pre class="code prettyprint">&#x2F;&#x2F; Render the sticker with john&#x27;s state information to the DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
john.applyNameTag(&quot;#john .shirt&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
&#x2F;&#x2F; Render the sticker with jane&#x27;s state information to the DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
jane.applySicker(&quot;#jane .shirt&quot;);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
<p>Although not directly related to working with Attributes, it's worth taking a look at the <code>applyNameTag()</code> and <code>updateNameTag()</code> implementations, since they establish
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
a commonly used pattern.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
<p>The <code>applyNameTag()</code> method handles rendering the initial visual representation for a speed dater object's state (in this case a name tag). It uses tokens in an HTML "template" string, which it replaces with the values 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
of attributes using the <code>Y.Lang.sub()</code> utility method:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
<pre class="code prettyprint">&#x2F;&#x2F; A template for the markup representing the SpeedDater object..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
SpeedDater.NAMETAG = &#x27;&lt;div class=&quot;sd-nametag&quot;&gt; \
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                        &lt;div class=&quot;sd-hd&quot;&gt;Hello!&lt;&#x2F;div&gt; \
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
                        &lt;div class=&quot;sd-bd&quot;&gt;I\&#x27;m &lt;span class=&quot;sd-name&quot;&gt;{name}&lt;&#x2F;span&gt; \ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
                        and my PersonalityQuotientIndex is \ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
                        &lt;span class=&quot;sd-personality&quot;&gt;{personality}&lt;&#x2F;span&gt; \
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
                        &lt;&#x2F;div&gt; \
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
                        &lt;div class=&quot;sd-ft sd-availability&quot;&gt;{available}&lt;&#x2F;div&gt; \
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
                     &lt;&#x2F;div&gt;&#x27;;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
<pre class="code prettyprint">&#x2F;&#x2F; A rendering method, used to create the initial markup for the SpeedDater.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
SpeedDater.prototype.applyNameTag = function(where) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
    &#x2F;&#x2F; This example uses an HTML template string containing placeholder 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
    &#x2F;&#x2F; tokens (SpeedDater.NAMETAG above), and Y.Lang.sub() to replace the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
    &#x2F;&#x2F; tokens with the current attribute values.  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
    var tokens = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
        &#x2F;&#x2F; Get attribute values and map them to the tokens in the HTML template string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
        name: this.get(&quot;name&quot;),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
        available: (this.get(&quot;available&quot;)) ? &quot;I&#x27;m still looking &quot; : &quot;Sorry, I&#x27;m taken&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
        personality: this.get(&quot;personality&quot;)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
    &#x2F;&#x2F; Create a new Node element, from the token substituted string... 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
    this.nameTag = Y.Node.create(Y.Lang.sub(SpeedDater.NAMETAG, tokens));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
    &#x2F;&#x2F; ... and append it to the DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
    Y.one(where).appendChild(this.nameTag);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
};</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
<p>The <code>updateNameTag()</code> method handles updating this visual representation with the current state, when requested by the user</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
<pre class="code prettyprint">&#x2F;&#x2F; An update method, used to refresh the rendered content, after 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
&#x2F;&#x2F; an attribute value is changed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
SpeedDater.prototype.updateNameTag = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
    &#x2F;&#x2F; Get current attribute values...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
    var taken = (this.get(&quot;available&quot;)) ? &quot;I&#x27;m still looking &quot; : &quot;Sorry, I&#x27;m taken&quot;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
    var name = this.get(&quot;name&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
    var personality = this.get(&quot;personality&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
    &#x2F;&#x2F; Find the corresponding element, and replace the innerHTML with the new value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
    this.nameTag.one(&quot;.sd-name&quot;).set(&quot;innerHTML&quot;, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
    this.nameTag.one(&quot;.sd-availability&quot;).set(&quot;innerHTML&quot;, taken);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
    var personalityEl = this.nameTag.one(&quot;.sd-personality&quot;); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
    personalityEl.set(&quot;innerHTML&quot;, personality);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
    if (personality &gt; 90) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
        personalityEl.addClass(&quot;sd-max&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
<p>Each instance's state can be now be updated using Attribute's <code>set</code> method, and the subsequent call to SpeedDater's <code>updateNameTag()</code> method will update the visual representation (the rendered DOM) of the object:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
<pre class="code prettyprint">Y.on(&quot;click&quot;, function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
    john.set(&quot;available&quot;, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
    john.updateNameTag();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
}, &quot;#john .taken&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
Y.on(&quot;click&quot;, function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
    jane.set(&quot;available&quot;, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
    jane.updateNameTag();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
}, &quot;#jane .taken&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
Y.on(&quot;click&quot;, function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
    jane.set(&quot;personality&quot;, 98);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
    jane.updateNameTag();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
}, &quot;#jane .upgrade&quot;);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
<p>In the <a href="attribute-event-speeddate.html">"Attribute Event Based Speed Dating" example</a>, we'll see how we can use Attribute change events to eliminate the need for users to call <code>updateNameTag()</code> each time they set an attribute, and have the two instances communicate with one another.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
<h2>Complete Example Source</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
<pre class="code prettyprint">&lt;div id=&quot;speeddate&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
    &lt;h1&gt;Speed Dating With Attributes&lt;&#x2F;h1&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
    &lt;div id=&quot;john&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
        &lt;button type=&quot;button&quot; class=&quot;hi&quot;&gt;Hi I&#x27;m John&lt;&#x2F;button&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
        &lt;button type=&quot;button&quot; class=&quot;taken&quot; disabled=&quot;disabled&quot;&gt;I like Jane&lt;&#x2F;button&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
        &lt;div class=&quot;shirt&quot;&gt;&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
    &lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
    &lt;div id=&quot;jane&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
        &lt;button type=&quot;button&quot; disabled=&quot;disabled&quot; class=&quot;hi&quot;&gt;Hey, I&#x27;m Jane&lt;&#x2F;button&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
        &lt;button type=&quot;button&quot; class=&quot;upgrade&quot; disabled=&quot;disabled&quot;&gt;No way!, I save whales too!&lt;&#x2F;button&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
        &lt;button type=&quot;button&quot; class=&quot;taken&quot; disabled=&quot;disabled&quot;&gt;I like John&lt;&#x2F;button&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
        &lt;div class=&quot;shirt&quot;&gt;&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
    &lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
&lt;script type=&quot;text&#x2F;javascript&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
&#x2F;&#x2F; Get a new instance of YUI and 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
&#x2F;&#x2F; load it with the required set of modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
YUI().use(&quot;node&quot;, &quot;attribute&quot;, function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
    &#x2F;&#x2F; Setup custom class which we want to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
    &#x2F;&#x2F; add managed attribute support to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
    function SpeedDater(cfg) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
        &#x2F;&#x2F; When constructed, setup the initial attributes for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
        &#x2F;&#x2F; instance, by calling the addAttrs method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
        var attrs = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
            &#x2F;&#x2F; Add 3 attributes: name, personality, available
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
            name : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
                writeOnce:true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
            personality : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                value:50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
            available : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
                value:true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
        this.addAttrs(attrs, cfg);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
    &#x2F;&#x2F; Setup static property to hold attribute config
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
    SpeedDater.NAMETAG = &#x27;&lt;div class=&quot;sd-nametag&quot;&gt;&lt;div class=&quot;sd-hd&quot;&gt;Hello!&lt;&#x2F;div&gt;&lt;div class=&quot;sd-bd&quot;&gt;I\&#x27;m &lt;span class=&quot;sd-name&quot;&gt;{name}&lt;&#x2F;span&gt; and my PersonalityQuotientIndex is &lt;span class=&quot;sd-personality&quot;&gt;{personality}&lt;&#x2F;span&gt;&lt;&#x2F;div&gt;&lt;div class=&quot;sd-ft sd-availability&quot;&gt;{available}&lt;&#x2F;div&gt;&lt;&#x2F;div&gt;&#x27;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
    SpeedDater.prototype.applyNameTag = function(where) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
        var tokens = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
            name: this.get(&quot;name&quot;),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
            available: (this.get(&quot;available&quot;)) ? &quot;I&#x27;m still looking&quot; : &quot;Sorry, I&#x27;m taken&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
            personality: this.get(&quot;personality&quot;)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
        var str = Y.Lang.sub(SpeedDater.NAMETAG, tokens);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
        this.nameTag = Y.Node.create(str);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
        Y.one(where).appendChild(this.nameTag);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
    SpeedDater.prototype.updateNameTag = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
        var taken = (this.get(&quot;available&quot;)) ? &quot;I&#x27;m still looking&quot; : &quot;Sorry, I&#x27;m taken&quot;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
        var name = this.get(&quot;name&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
        var personality = this.get(&quot;personality&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
        this.nameTag.one(&quot;.sd-name&quot;).set(&quot;innerHTML&quot;, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
        this.nameTag.one(&quot;.sd-availability&quot;).set(&quot;innerHTML&quot;, taken);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
        var personalityEl = this.nameTag.one(&quot;.sd-personality&quot;); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
        personalityEl.set(&quot;innerHTML&quot;, personality);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
        if (personality &gt; 90) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
            personalityEl.addClass(&quot;sd-max&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
    &#x2F;&#x2F; Augment custom class with Attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
    Y.augment(SpeedDater, Y.Attribute);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
    var john, jane;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
    Y.on(&quot;click&quot;, function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
        if (!john) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
            &#x2F;&#x2F; Set both name and personality during construction 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
            john = new SpeedDater({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
                name: &quot;John&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
                personality: 76.43
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
            john.applyNameTag(&quot;#john .shirt&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
            Y.one(&quot;#jane .hi&quot;).set(&quot;disabled&quot;, false); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
    }, &quot;#john .hi&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
    Y.on(&quot;click&quot;, function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
        if (!jane) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
            &#x2F;&#x2F; Set name during construction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
            jane = new SpeedDater({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
                name: &quot;Jane&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
            &#x2F;&#x2F; Set personality after construction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
            jane.set(&quot;personality&quot;, 82);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
            jane.applyNameTag(&quot;#jane .shirt&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
            Y.all(&quot;#jane button&quot;).set(&quot;disabled&quot;, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
            Y.all(&quot;#john button&quot;).set(&quot;disabled&quot;, false); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
    }, &quot;#jane .hi&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
    Y.on(&quot;click&quot;, function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
        john.set(&quot;available&quot;, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
        john.updateNameTag();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
    }, &quot;#john .taken&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
    Y.on(&quot;click&quot;, function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
        jane.set(&quot;available&quot;, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
        jane.updateNameTag();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
    }, &quot;#jane .taken&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
    Y.on(&quot;click&quot;, function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
        jane.set(&quot;personality&quot;, 98);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
        jane.updateNameTag();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
    }, &quot;#jane .upgrade&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
 });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
                                        <li data-description="Use the Attribute API to define, set and get attribute values.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
                                            <a href="attribute-basic.html">Basic Attribute Configuration</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
                                        <li data-description="Configure attributes to be readOnly or writeOnce.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
                                            <a href="attribute-rw.html">Read-Only and Write-Once Attributes</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
                                        <li data-description="How to listen for changes in attribute values.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
                                            <a href="attribute-event.html">Attribute Change Events</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
                                        <li data-description="Create a basic SpeedDater class, with Attribute support.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
                                            <a href="attribute-basic-speeddate.html">Attribute Based Speed Dating</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
                                        <li data-description="Refactors the basic Speed Dating example, to use attribute change events to update rendered elements, and have two instances react to another.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
                                            <a href="attribute-event-speeddate.html">Attribute Event Based Speed Dating</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
                                        <li data-description="Add custom methods to get and set attribute values and provide validation support.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
                                            <a href="attribute-getset.html">Attribute Getters, Setters and Validators</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
    assets: '../assets/attribute',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
    name: 'attribute-basic-speeddate',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
    title: 'Attribute Based Speed Dating',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
YUI.Env.Tests.examples.push('attribute-basic');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
YUI.Env.Tests.examples.push('attribute-rw');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
YUI.Env.Tests.examples.push('attribute-event');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
YUI.Env.Tests.examples.push('attribute-basic-speeddate');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
YUI.Env.Tests.examples.push('attribute-event-speeddate');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
YUI.Env.Tests.examples.push('attribute-getset');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
<script src="../assets/yui/test-runner.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
</html>