| <!-- |
| Copyright 2006 Google Inc. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <!-- |
| Author: Steffen Meschkat (mesch@google.com) |
| Interactive jstemplates test page, specifically to demonstrate |
| recursive templates |
| --> |
| <head> |
| <title>Interactive tests for jstemplate</title> |
| <script src="util.js" type="text/javascript"></script> |
| <script src="jsevalcontext.js" type="text/javascript"></script> |
| <script src="jstemplate.js" type="text/javascript"></script> |
| <script src="jstemplate_example.js" type="text/javascript"></script> |
| <style type="text/css"> |
| .section { border: 1px solid silver; margin: 1em; } |
| .section TEXTAREA { border: none; width: 100%; } |
| </style> |
| </head> |
| <body onload="jsinit()"> |
| <table summary="Test setup"> |
| <tr> |
| <th>template</th> |
| <th>data</th> |
| </tr> |
| <tr> |
| <td> |
| <textarea id="template" rows="15" cols="80"></textarea> |
| </td> |
| <td> |
| <textarea id="js" rows="15" cols="80"> |
| { title: "title1", items: [ |
| { title: "title2", items: [ |
| { title: "title2", items: [ |
| { title: "title3", items: []}, |
| { title: "title4", items: []} |
| ]}, |
| { title: "title5", items: []} |
| ]}, |
| { title: "title3", items: []}, |
| { title: "title4", items: []}, |
| { title: "title5", items: []} |
| ], |
| testArray: ["", "", "1", "2"] |
| } |
| </textarea> |
| </td> |
| </tr> |
| <tr> |
| <td colspan="2"> |
| <a href="javascript:jstest(false)">process</a> |
| <a href="javascript:jstest(true)">reprocess</a> |
| </td> |
| </tr> |
| <tr> |
| <th>output HTML</th> |
| <th>output display</th> |
| </tr> |
| <tr> |
| <td> |
| <textarea id="html" rows="15" cols="80"></textarea> |
| </td> |
| <td> |
| <div id="out" class="section"></div> |
| </td> |
| </tr> |
| </table> |
| <p><a href="javascript:jstest(false)">Process</a> the |
| <b>template</b>, upper left, with the <b>data</b>, upper |
| right. See the resulting DOM in <b>output display</b>, lower |
| right, and the corresponding HTML text in <b>output HTML</b>, |
| lower left. Notice, however, that the template processing happens |
| directly on the HTML DOM, and the HTML text shown is merely the |
| <code>innerHTML</code> of that DOM.</p> |
| <p>Now, change the <b>data</b> and <a |
| href="javascript:jstest(true)">reprocess</a> the DOM of the <b>output |
| display</b> with the changed data, and see that the <b>output |
| display</b> reflects the change. Notice that the reprocessing |
| takes place on the DOM of <b>output display</b>, i.e. on the |
| result of the previous template processing.</p> |
| <div style="display:none" id="tc"> |
| <div id="t"> |
| <span jscontent="title"></span> |
| <ul jsdisplay="items.length"> |
| <li jsselect="items"> |
| <div transclude="t"></div> |
| </li> |
| </ul> |
| <div jsselect="testArray"> |
| content: <span jscontent="$this"></span> |
| </div> |
| </div> |
| </div> |
| </body> |
| </html> |