src/cm/media/js/lib/yui/yui_3.10.3/docs/calendar/calendar-multipane.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: Two-Pane Calendar with Custom Rendering and Multiple Selection</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: Two-Pane Calendar with Custom Rendering and Multiple Selection</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>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
.example {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
	font-size:15px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
.example h4 {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
	border: none;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
	text-transform: none;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
.example th {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
	background: none;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
	color: #000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
	text-transform: none;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
	border: none;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
</style>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
<div class="intro">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
This example demonstrates how to instantiate a Calendar, switch its template to a double-pane, and create custom renderers for its header and certain cells (based on rules), as well as turn on multiple date selection and disable certain dates from being selected.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
<p><strong>The <code>selectionMode</code> in this example is set to <code>multiple</code></strong>, which allows additional dates to be selected if a <strong>Shift</strong> or <strong>Ctrl/Meta</strong> key is held down. This selection mode does not allow multiple selection on touchscreen devices; for such devices, use the <code>multiple-sticky</code> selection mode instead.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
<strong>There are two custom filtering rules provided in the example code.</strong> One matches all Saturdays and Sundays (weekends in the United States), and the other matches Tuesdays and Fridays. The first rule is used in conjunction with a custom renderer to set the corresponding date cell text color to red. The second rule is used to disable matching dates from selection and interaction.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
<div class="example yui3-skin-sam">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    <style>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
.yui3-skin-sam .redtext {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
  color:#ff0000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
</style>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
<div id="demo" class="yui3-skin-sam"> <!-- You need this skin class -->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
  <div id="mycalendar"></div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
<script type="text/javascript">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
YUI().use('calendar', 'datatype-date', 'datatype-date-math', function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
 // Switch the calendar main template to the included two pane template
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
 Y.CalendarBase.CONTENT_TEMPLATE = Y.CalendarBase.TWO_PANE_TEMPLATE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
 // Create a new instance of calendar, setting the showing of previous
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
 // and next month's dates to true, and the selection mode to multiple
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
 // selected dates. Additionally, set the disabledDatesRule to a name of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
 // the rule which, when matched, will force the date to be excluded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
 // from being selected. Also configure the initial date on the calendar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
 // to be July of 2011.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
 var calendar = new Y.Calendar({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
   contentBox: "#mycalendar",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
   width: "700px",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
   showPrevMonth: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
   showNextMonth: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
   selectionMode: 'multiple',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
   disabledDatesRule: "tuesdays_and_fridays",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
   date: new Date(2011, 6, 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
 }).render();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
// Create a set of rules to match specific dates. In this case,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
// the "tuesdays_and_fridays" rule will match any Tuesday or Friday,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
// whereas the "all_weekends" rule will match any Saturday or Sunday.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
 var rules = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
   "all": {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
     "all": {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
       "all": {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
         "2,5": "tuesdays_and_fridays",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
         "0,6": "all_weekends"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
       }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
     }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
   }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
 };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
// Set the calendar customRenderer, provides the rules defined above,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
// as well as a filter function. The filter function receives a reference
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
// to the node corresponding to the DOM element of the date that matched
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
// one or more rule, along with the list of rules. Check if one of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
// rules is "all_weekends", and if so, apply a custom CSS class to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
// node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
 calendar.set("customRenderer", {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
   rules: rules,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
   filterFunction: function (date, node, rules) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
     if (Y.Array.indexOf(rules, 'all_weekends') >= 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
       node.addClass("redtext");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
     }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
   }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
 });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
// Set a custom header renderer with a callback function,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
// which receives the current date and outputs a string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
// use the Y.Datatype.Date format to format the date, and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
// the Datatype.Date math to add one month to the current
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
// date, so both months can appear in the header (since 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
// this is a two-pane calendar).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
 calendar.set("headerRenderer", function (curDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
   var ydate = Y.DataType.Date,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
       output = ydate.format(curDate, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
       format: "%B %Y"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
     }) + " &mdash; " + ydate.format(ydate.addMonths(curDate, 1), {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
       format: "%B %Y"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
     });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
   return output;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
 }); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
// When selection changes, output the fired event to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
// console. the newSelection attribute in the event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
// will contain the list of currently selected dates (or be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
// empty if all dates have been deselected).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
 calendar.on("selectionChange", function (ev) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
   Y.log(ev);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
 });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
 });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
<h2>Complete Example Source</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
<strong>Note:</strong> be sure to add the <code>yui3-skin-sam</code> classname to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
page's <code>&lt;body&gt;</code> element or to a parent element of the widget in order to apply
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
the default CSS skin. See <a href="http://yuilibrary.com/yui/docs/tutorials/skins/">Understanding Skinning</a>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
<pre class="code prettyprint">&lt;style&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
.yui3-skin-sam .redtext {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
  color:#ff0000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
&lt;&#x2F;style&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
&lt;div id=&quot;demo&quot; class=&quot;yui3-skin-sam&quot;&gt; &lt;!-- You need this skin class --&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
  &lt;div id=&quot;mycalendar&quot;&gt;&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
&lt;script type=&quot;text&#x2F;javascript&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
YUI().use(&#x27;calendar&#x27;, &#x27;datatype-date&#x27;, &#x27;datatype-date-math&#x27;, function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
 &#x2F;&#x2F; Switch the calendar main template to the included two pane template
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
 Y.CalendarBase.CONTENT_TEMPLATE = Y.CalendarBase.TWO_PANE_TEMPLATE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
 &#x2F;&#x2F; Create a new instance of calendar, setting the showing of previous
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
 &#x2F;&#x2F; and next month&#x27;s dates to true, and the selection mode to multiple
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
 &#x2F;&#x2F; selected dates. Additionally, set the disabledDatesRule to a name of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
 &#x2F;&#x2F; the rule which, when matched, will force the date to be excluded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
 &#x2F;&#x2F; from being selected. Also configure the initial date on the calendar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
 &#x2F;&#x2F; to be July of 2011.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
 var calendar = new Y.Calendar({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
   contentBox: &quot;#mycalendar&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
   width: &quot;700px&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
   showPrevMonth: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
   showNextMonth: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
   selectionMode: &#x27;multiple&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
   disabledDatesRule: &quot;tuesdays_and_fridays&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
   date: new Date(2011, 6, 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
 }).render();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
&#x2F;&#x2F; Create a set of rules to match specific dates. In this case,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
&#x2F;&#x2F; the &quot;tuesdays_and_fridays&quot; rule will match any Tuesday or Friday,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
&#x2F;&#x2F; whereas the &quot;all_weekends&quot; rule will match any Saturday or Sunday.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
 var rules = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
   &quot;all&quot;: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
     &quot;all&quot;: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
       &quot;all&quot;: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
         &quot;2,5&quot;: &quot;tuesdays_and_fridays&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
         &quot;0,6&quot;: &quot;all_weekends&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
       }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
     }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
   }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
 };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
&#x2F;&#x2F; Set the calendar customRenderer, provides the rules defined above,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
&#x2F;&#x2F; as well as a filter function. The filter function receives a reference
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
&#x2F;&#x2F; to the node corresponding to the DOM element of the date that matched
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
&#x2F;&#x2F; one or more rule, along with the list of rules. Check if one of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
&#x2F;&#x2F; rules is &quot;all_weekends&quot;, and if so, apply a custom CSS class to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
&#x2F;&#x2F; node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
 calendar.set(&quot;customRenderer&quot;, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
   rules: rules,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
   filterFunction: function (date, node, rules) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
     if (Y.Array.indexOf(rules, &#x27;all_weekends&#x27;) &gt;= 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
       node.addClass(&quot;redtext&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
     }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
   }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
 });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
&#x2F;&#x2F; Set a custom header renderer with a callback function,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
&#x2F;&#x2F; which receives the current date and outputs a string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
&#x2F;&#x2F; use the Y.Datatype.Date format to format the date, and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
&#x2F;&#x2F; the Datatype.Date math to add one month to the current
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
&#x2F;&#x2F; date, so both months can appear in the header (since 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
&#x2F;&#x2F; this is a two-pane calendar).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
 calendar.set(&quot;headerRenderer&quot;, function (curDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
   var ydate = Y.DataType.Date,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
       output = ydate.format(curDate, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
       format: &quot;%B %Y&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
     }) + &quot; &amp;mdash; &quot; + ydate.format(ydate.addMonths(curDate, 1), {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
       format: &quot;%B %Y&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
     });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
   return output;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
 }); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
&#x2F;&#x2F; When selection changes, output the fired event to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
&#x2F;&#x2F; console. the newSelection attribute in the event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
&#x2F;&#x2F; will contain the list of currently selected dates (or be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
&#x2F;&#x2F; empty if all dates have been deselected).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
 calendar.on(&quot;selectionChange&quot;, function (ev) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
   Y.log(ev);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
 });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
 
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
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
                                        <li data-description="How to create a single-pane calendar with selectable dates">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
                                            <a href="calendar-simple.html">Simple Calendar with Selection</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
                                        <li data-description="How to create a multi-pane calendar with custom-rendered cells and multiple date selection.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
                                            <a href="calendar-multipane.html">Two-Pane Calendar with Custom Rendering and Multiple Selection</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
    assets: '../assets/calendar',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    name: 'calendar-multipane',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
    title: 'Two-Pane Calendar with Custom Rendering and Multiple Selection',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
YUI.Env.Tests.examples.push('calendar-simple');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
YUI.Env.Tests.examples.push('calendar-multipane');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
<script src="../assets/yui/test-runner.js"></script>
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
</html>