новые иконки в OpenBoard
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OpenBoard/resources/library/interactivities/Calcul.wgt/js/main.js

114 lines
3.0 KiB

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 = $("<div id='operations'></div>");
$scene.append($operationContainer);
$pagination = $("<ul class='pagination'></ul>");
$operationContainer.append($pagination);
for (var i = 0; i < operations; i++)
$("<li><span>"+(i+1)+"</span></li>").appendTo($pagination);
$operations = $("<ul class='operations'></ul>");
$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 = $("<div>"+ope.join("<span class='operator'>"+operator+"</span>")+"<span class='equal'>=</span><span class='input'>...</span><button type='button' disabled>Submit</button></div>");
var $li = $("<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);
});