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

Unified Diff: pkg/polymer/lib/elements/web-animations-js/tutorial/try-it-yourself.js

Issue 175443005: [polymer] import all elements (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: updated from bower Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: pkg/polymer/lib/elements/web-animations-js/tutorial/try-it-yourself.js
diff --git a/pkg/polymer/lib/elements/web-animations-js/tutorial/try-it-yourself.js b/pkg/polymer/lib/elements/web-animations-js/tutorial/try-it-yourself.js
new file mode 100644
index 0000000000000000000000000000000000000000..46e0fae8c60fbae8e8b8381d06a60b717766b848
--- /dev/null
+++ b/pkg/polymer/lib/elements/web-animations-js/tutorial/try-it-yourself.js
@@ -0,0 +1,216 @@
+/*
+ * Copyright 2013 Google Inc. All Rights Reserved.
+ *
+ * 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.
+ */
+"use strict";
+
+// TryItDisplay creates and represents the input and output display.
+ function TryItDisplay(containerElement) {
+ this.iframe = new Iframe();
+ this.create(containerElement);
+}
+
+// Function that creates the input and output for the TryItYourself object.
+ TryItDisplay.prototype.create = function(containerElement) {
+ var heading = document.createElement("div");
+ heading.setAttribute("class", "heading");
+ heading.setAttribute("id", "heading")
+ heading.innerHTML = "TRY IT YOURSELF";
+ containerElement.appendChild(heading);
+
+ var button = document.createElement("button");
+ button.onclick = function(me) { return function() { me.update(); }; }(this);
+ button.setAttribute("id", "update");
+ button.innerHTML = "Update";
+ heading.appendChild(button);
+
+ var code = document.createElement("div");
+ code.setAttribute("class", "code");
+ code.setAttribute("id", "allCode");
+ containerElement.appendChild(code);
+
+ var display = document.createElement("div");
+ display.setAttribute("class", "display");
+ containerElement.appendChild(display);
+ display.appendChild(this.iframe.getDom());
+
+ var htmlHeader = document.createElement("div");
+ htmlHeader.setAttribute("class", "label");
+ htmlHeader.setAttribute("id", "htmlLabel")
+ htmlHeader.innerHTML = "HTML Code";
+ code.appendChild(htmlHeader);
+
+ var htmlCode = document.createElement("textarea");
+ htmlCode.setAttribute("id", "htmlCode");
+ htmlCode.setAttribute("class", "code");
+ code.appendChild(htmlCode);
+
+ var cssHeader = document.createElement("div");
+ cssHeader.setAttribute("class", "label");
+ cssHeader.setAttribute("id", "cssLabel")
+ cssHeader.innerHTML = "CSS Style";
+ code.appendChild(cssHeader);
+
+ var cssCode = document.createElement("textarea");
+ cssCode.setAttribute("id", "cssCode");
+ cssCode.setAttribute("class", "code");
+ code.appendChild(cssCode);
+
+ var jsHeader = document.createElement("div");
+ jsHeader.setAttribute("class", "label");
+ jsHeader.setAttribute("id", "jsLabel")
+ jsHeader.innerHTML = "Javascript";
+ code.appendChild(jsHeader);
+
+ var jsCode = document.createElement("textarea");
+ jsCode.setAttribute("id", "jsCode");
+ jsCode.setAttribute("class", "code");
+ code.appendChild(jsCode);
+
+ var heading = document.createElement("div");
+ heading.setAttribute("class", "heading fail");
+ heading.setAttribute("id", "passOrFail")
+ heading.innerHTML = "YOU PASSED!";
+ containerElement.appendChild(heading);
+}
+
+TryItDisplay.prototype.setDefaultHtml = function(newHtml) {
+ document.getElementById('htmlCode').innerHTML = newHtml ? newHtml : "";
+}
+
+TryItDisplay.prototype.setDefaultCss = function(newCss) {
+ document.getElementById('cssCode').innerHTML = newCss ? newCss : "";
+}
+
+TryItDisplay.prototype.setDefaultJs = function(newJs) {
+ document.getElementById('jsCode').innerHTML = newJs ? newJs : "";
+}
+
+TryItDisplay.prototype.addCheck = function(object, property, time) {
+ this.iframe.checks.push("check("
+ + object + ", " + property + ", " + time + ", 'default');");
+}
+
+// Set the default end time for the animation clock.
+// Note: this will be overwritten if the user creates an animation longer than
+// the time set here.
+TryItDisplay.prototype.setTime = function(newTime) {
+ this.iframe.time = newTime;
+}
+
+// Update takes the information currently in the HTML, CSS, and JS input boxes
+// and displays it in the iframe.
+TryItDisplay.prototype.update = function() {
+ // Reload the iframe by resetting the source.
+ document.getElementById("display").src = document.getElementById("display").src;
+ document.getElementById("display").onload = function(me) {
+ return function() {
+ me.addCssHtml();
+ me.addAnimScript();
+ };
+ }(this);
+}
+
+// Add the CSS and HTML into the iframe.
+TryItDisplay.prototype.addCssHtml = function() {
+ var iframeDoc = this.iframe.doc.contentDocument;
+ var htmlVal = document.getElementById("htmlCode").value;
+ var cssVal = document.getElementById('cssCode').value
+ +"\n" +"#dummy { display: none; }";
+ iframeDoc.getElementsByTagName("body")[0].innerHTML = htmlVal;
+ iframeDoc.getElementsByTagName("style")[0].innerHTML = cssVal;
+
+ // dummDiv allows the animation time to display properly the first time
+ // the page loads.
+ var dummyDiv = document.createElement("div");
+ dummyDiv.setAttribute("id", "dummy");
+ dummyDiv.setAttribute("class", "test");
+ iframeDoc.getElementsByTagName("body")[0].appendChild(dummyDiv);
+}
+
+// Add the Javascript value to the iframe.
+TryItDisplay.prototype.addAnimScript = function() {
+ var scriptElement = document.createElement('script');
+ var jsVal = this.getJsVal();
+ var iframeDoc = this.iframe.doc.contentDocument;
+
+ var scriptDivs = iframeDoc.getElementsByTagName('script');
+ scriptElement.innerHTML = jsVal;
+ par = iframeDoc.getElementsByTagName('body')[0];
+ par.appendChild(scriptElement);
+}
+
+// Get the user provided Javascript value, and append additional information
+// to run the tests properly.
+TryItDisplay.prototype.getJsVal = function() {
+ var iframeDoc = this.iframe.doc.contentDocument;
+ // The animation added to the javascript input allows the animation time to
+ // display even when the user does not input an animation.
+ var jsVal = "setupTutorialTests(); \n"
+ + document.getElementById('jsCode').value + "\n"
+ + "new Animation(document.getElementById('dummy'), {left: '100px'}, "
+ + this.iframe.time + ");";
+
+ for (var i = 0; i < this.iframe.checks.length; i++) {
+ jsVal += "\n" + this.iframe.checks[i];
+ }
+ jsVal += " \nrunTests();";
+ return jsVal;
+}
+
+// Function to call once the user passes the tutorial.
+TryItDisplay.pass = function() {
+ document.getElementById("passOrFail").className = "heading pass";
+}
+
+// Function to call if the user fails the tutorial.
+TryItDisplay.fail = function() {
+ document.getElementById("passOrFail").className = "heading fail";
+}
+
+// Constructor for the Iframe object.
+function Iframe() {
+ this.doc = document.createElement('iframe');
+ // Checks will store all the tests done on the animations in the iframe.
+ // Developers can add to it using the addCheck function.
+ this.checks = [];
+ // Time stores the defualt animation time. It controls how long the hidden
+ // animation runs and therefore the default animation timer.
+ this.time = 5;
+
+ this.pass = false;
+
+ this.doc.setAttribute('id', 'display');
+ this.doc.setAttribute('class', 'display');
+ this.doc.setAttribute('src', 'iframe-contents.html');
+}
+
+Iframe.prototype.getDom = function() {
+ return this.doc;
+}
+
+// Make the solution box toggleable.
+var toggleSolution = function() {
+ var element = document.getElementById('toggleText');
+ var elementStyle = getComputedStyle(element, null);
+ var label = document.getElementById('hideLabel');
+
+ if (elementStyle.display === 'none') {
+ element.style.display = 'block';
+ label.innerHTML = 'Hide Solution';
+ } else if (elementStyle.display === 'block') {
+ element.style.display = 'none';
+ label.innerHTML = 'Show Solution';
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698