Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: bower_components/web-animations-js/tutorial/try-it-yourself.js

Issue 786953007: npm_modules: Fork bower_components into Polymer 0.4.0 and 0.5.0 versions (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright 2013 Google Inc. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 "use strict";
17
18 // TryItDisplay creates and represents the input and output display.
19 function TryItDisplay(containerElement) {
20 this.iframe = new Iframe();
21 this.create(containerElement);
22 }
23
24 // Function that creates the input and output for the TryItYourself object.
25 TryItDisplay.prototype.create = function(containerElement) {
26 var heading = document.createElement("div");
27 heading.setAttribute("class", "heading");
28 heading.setAttribute("id", "heading")
29 heading.innerHTML = "TRY IT YOURSELF";
30 containerElement.appendChild(heading);
31
32 var button = document.createElement("button");
33 button.onclick = function(me) { return function() { me.update(); }; }(this);
34 button.setAttribute("id", "update");
35 button.innerHTML = "Update";
36 heading.appendChild(button);
37
38 var code = document.createElement("div");
39 code.setAttribute("class", "code");
40 code.setAttribute("id", "allCode");
41 containerElement.appendChild(code);
42
43 var display = document.createElement("div");
44 display.setAttribute("class", "display");
45 containerElement.appendChild(display);
46 display.appendChild(this.iframe.getDom());
47
48 var htmlHeader = document.createElement("div");
49 htmlHeader.setAttribute("class", "label");
50 htmlHeader.setAttribute("id", "htmlLabel")
51 htmlHeader.innerHTML = "HTML Code";
52 code.appendChild(htmlHeader);
53
54 var htmlCode = document.createElement("textarea");
55 htmlCode.setAttribute("id", "htmlCode");
56 htmlCode.setAttribute("class", "code");
57 code.appendChild(htmlCode);
58
59 var cssHeader = document.createElement("div");
60 cssHeader.setAttribute("class", "label");
61 cssHeader.setAttribute("id", "cssLabel")
62 cssHeader.innerHTML = "CSS Style";
63 code.appendChild(cssHeader);
64
65 var cssCode = document.createElement("textarea");
66 cssCode.setAttribute("id", "cssCode");
67 cssCode.setAttribute("class", "code");
68 code.appendChild(cssCode);
69
70 var jsHeader = document.createElement("div");
71 jsHeader.setAttribute("class", "label");
72 jsHeader.setAttribute("id", "jsLabel")
73 jsHeader.innerHTML = "Javascript";
74 code.appendChild(jsHeader);
75
76 var jsCode = document.createElement("textarea");
77 jsCode.setAttribute("id", "jsCode");
78 jsCode.setAttribute("class", "code");
79 code.appendChild(jsCode);
80
81 var heading = document.createElement("div");
82 heading.setAttribute("class", "heading fail");
83 heading.setAttribute("id", "passOrFail")
84 heading.innerHTML = "YOU PASSED!";
85 containerElement.appendChild(heading);
86 }
87
88 TryItDisplay.prototype.setDefaultHtml = function(newHtml) {
89 document.getElementById('htmlCode').innerHTML = newHtml ? newHtml : "";
90 }
91
92 TryItDisplay.prototype.setDefaultCss = function(newCss) {
93 document.getElementById('cssCode').innerHTML = newCss ? newCss : "";
94 }
95
96 TryItDisplay.prototype.setDefaultJs = function(newJs) {
97 document.getElementById('jsCode').innerHTML = newJs ? newJs : "";
98 }
99
100 TryItDisplay.prototype.addCheck = function(object, property, time) {
101 this.iframe.checks.push("check("
102 + object + ", " + property + ", " + time + ", 'default');");
103 }
104
105 // Set the default end time for the animation clock.
106 // Note: this will be overwritten if the user creates an animation longer than
107 // the time set here.
108 TryItDisplay.prototype.setTime = function(newTime) {
109 this.iframe.time = newTime;
110 }
111
112 // Update takes the information currently in the HTML, CSS, and JS input boxes
113 // and displays it in the iframe.
114 TryItDisplay.prototype.update = function() {
115 // Reload the iframe by resetting the source.
116 document.getElementById("display").src = document.getElementById("display").sr c;
117 document.getElementById("display").onload = function(me) {
118 return function() {
119 me.addCssHtml();
120 me.addAnimScript();
121 };
122 }(this);
123 }
124
125 // Add the CSS and HTML into the iframe.
126 TryItDisplay.prototype.addCssHtml = function() {
127 var iframeDoc = this.iframe.doc.contentDocument;
128 var htmlVal = document.getElementById("htmlCode").value;
129 var cssVal = document.getElementById('cssCode').value
130 +"\n" +"#dummy { display: none; }";
131 iframeDoc.getElementsByTagName("body")[0].innerHTML = htmlVal;
132 iframeDoc.getElementsByTagName("style")[0].innerHTML = cssVal;
133
134 // dummDiv allows the animation time to display properly the first time
135 // the page loads.
136 var dummyDiv = document.createElement("div");
137 dummyDiv.setAttribute("id", "dummy");
138 dummyDiv.setAttribute("class", "test");
139 iframeDoc.getElementsByTagName("body")[0].appendChild(dummyDiv);
140 }
141
142 // Add the Javascript value to the iframe.
143 TryItDisplay.prototype.addAnimScript = function() {
144 var scriptElement = document.createElement('script');
145 var jsVal = this.getJsVal();
146 var iframeDoc = this.iframe.doc.contentDocument;
147
148 var scriptDivs = iframeDoc.getElementsByTagName('script');
149 scriptElement.innerHTML = jsVal;
150 par = iframeDoc.getElementsByTagName('body')[0];
151 par.appendChild(scriptElement);
152 }
153
154 // Get the user provided Javascript value, and append additional information
155 // to run the tests properly.
156 TryItDisplay.prototype.getJsVal = function() {
157 var iframeDoc = this.iframe.doc.contentDocument;
158 // The animation added to the javascript input allows the animation time to
159 // display even when the user does not input an animation.
160 var jsVal = "setupTutorialTests(); \n"
161 + document.getElementById('jsCode').value + "\n"
162 + "new Animation(document.getElementById('dummy'), {left: '100px'}, "
163 + this.iframe.time + ");";
164
165 for (var i = 0; i < this.iframe.checks.length; i++) {
166 jsVal += "\n" + this.iframe.checks[i];
167 }
168 jsVal += " \nrunTests();";
169 return jsVal;
170 }
171
172 // Function to call once the user passes the tutorial.
173 TryItDisplay.pass = function() {
174 document.getElementById("passOrFail").className = "heading pass";
175 }
176
177 // Function to call if the user fails the tutorial.
178 TryItDisplay.fail = function() {
179 document.getElementById("passOrFail").className = "heading fail";
180 }
181
182 // Constructor for the Iframe object.
183 function Iframe() {
184 this.doc = document.createElement('iframe');
185 // Checks will store all the tests done on the animations in the iframe.
186 // Developers can add to it using the addCheck function.
187 this.checks = [];
188 // Time stores the defualt animation time. It controls how long the hidden
189 // animation runs and therefore the default animation timer.
190 this.time = 5;
191
192 this.pass = false;
193
194 this.doc.setAttribute('id', 'display');
195 this.doc.setAttribute('class', 'display');
196 this.doc.setAttribute('src', 'iframe-contents.html');
197 }
198
199 Iframe.prototype.getDom = function() {
200 return this.doc;
201 }
202
203 // Make the solution box toggleable.
204 var toggleSolution = function() {
205 var element = document.getElementById('toggleText');
206 var elementStyle = getComputedStyle(element, null);
207 var label = document.getElementById('hideLabel');
208
209 if (elementStyle.display === 'none') {
210 element.style.display = 'block';
211 label.innerHTML = 'Hide Solution';
212 } else if (elementStyle.display === 'block') {
213 element.style.display = 'none';
214 label.innerHTML = 'Show Solution';
215 }
216 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698