function onTemplateLoadedCallback() { } function change() { $(".pagination .current").removeClass("current"); $(".operations .current").removeClass("current"); } function open(index) { $(".pagination li").eq(index).addClass("current"); $(".operations li").eq(index).addClass("current"); } function reloadApp(app) { var operator = app.parameters.value("operator"); var range = parseInt(app.parameters.value("range")); var count = parseInt(app.parameters.value("count")); var operations = parseInt(app.parameters.value("operations")); $scene = $("#scene"); $scene.empty(); $operationContainer = $("
"); $scene.append($operationContainer); $pagination = $(""); $operationContainer.append($pagination); for (var i = 0; i < operations; i++) $("
  • "+(i+1)+"
  • ").appendTo($pagination); $operations = $(""); $operationContainer.append($operations); var opes = []; var submitted = []; for (var i = 0; i < operations; i++) { var ope = []; for (var j = 0; j < count; j++) { ope.push(Math.floor(Math.random()*range)); } opes.push(ope); var $text = $("
    "+ope.join(""+operator+"")+"=...
    "); var $li = $("
  • "); $li.append($text); $operations.append($li); } if(!app.onEdit) { $(".input", $operations).each(function(){ var $input = $(this); $input.get(0).contentEditable = true; $input.focus(function(){ if($(this).text() == "...") $(this).text(""); }); $input.keyup(function(){ var v = parseInt($(this).text().trim()); if(isNaN(v)) { $(this).next().attr("disabled", true); }else{ $(this).next().attr("disabled", false); } }); $input.bind('blur', function(){ var v = parseInt($(this).text().trim()); if(isNaN(v)) { $(this).text("..."); $(this).next().attr("disabled", true); }else{ $(this).next().attr("disabled", false); } }); }); $("button", $operations).click(function(){ var $button = $(this); var v = $button.prev().text(); if(!isNaN(v)) { var $li = $button.closest('li'); $button.remove(); var index = $li.index(); submitted[index] = v; var waiting = eval(opes[index].join(operator)); var clazz = (waiting == v ? "succeed" : "failed"); $pagination.find("li").eq(index).addClass(clazz); $li.addClass(clazz); setTimeout(function(){ change(); $li.addClass("closed"); if(index == (operations-1)) { $operationContainer.addClass("finish"); }else open(index+1); }, 2000); } }); } open(0); } function reloadCallback(parameter) { reloadApp(this); } $(document).ready(function(){ var callbacks = { onTemplatesLoaded: onTemplateLoadedCallback, onEdit: reloadApp, onView: reloadApp }; init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks); });