1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
var just_a_flag = false;
function onTemplateLoadedCallback() {
}
function revert($e) {
var elmt = $e.css("left","auto").css("top", "auto").removeClass("inBox").get(0);
if(elmt)
elmt.className = elmt.className.replace(/(d(\d+))/, "");
}
function getN(range) {
if(range > 1)
return Math.floor(Math.random()*range);
else if(range == 1)
return Math.round(Math.random()*10)/10;
else if(range == 0.1)
return Math.round(Math.random()*0.1*100)/100;
}
function reloadApp(app) {
var operator = app.parameters.value("operator");
var range = parseFloat(app.parameters.value("range"));
var count = parseInt(app.parameters.value("count"));
var show = app.parameters.value("show");
if(!just_a_flag){
just_a_flag = true;
show = "3";
}
switch(show){
case "1":
$("#labels div div").each(function(){
$(this).css("top","auto").css("left","auto")
})
break;
case "2":
break;
default:
$scene = $("#scene");
$scene.empty();
$labels = $("<div id='labels'></div>");
$scene.append($labels);
$drops = $("<div id='drops'></div>");
$scene.append($drops);
var meeted = [];
for (var i = 0; i < count; i++) {
var n = getN(range);
while($.inArray(n, meeted) != -1)
n = getN(range);
meeted.push(n);
$label = $("<div id='l"+i+"' class='label'>"+n+"</div>");
$labels.append($label);
$label.wrap("<div/>");
$label.draggable({
containment: "#scene",
scroll: false,
snap: ".drop",
snapMode: "inner"
});
$drop = $("<div id='d"+i+"' class='drop'></div>");
$drops.append($drop);
$drop.droppable({
hoverClass: "ui-state-hover",
activeClass: "ui-state-active",
greedy: true,
drop: function(event, ui) {
var id = $(this).attr("id");
var $current = $(".inBox."+id);
if($current.size() > 0 && $current.attr("id") != ui.draggable.attr("id"))
revert($current);
ui.draggable.get(0).className = ui.draggable.get(0).className.replace(/(d(\d+))/, "");
ui.draggable.addClass("inBox").addClass(id);
}
});
if(i != count-1) {
$("<div class='operator'>"+operator+"</div>").appendTo($drops);
}
}
$scene.droppable({
drop: function(event, ui) {
revert(ui.draggable);
}
});
break;
}
}
function reloadCallback(parameter) {
if(parameter === undefined)
reloadApp(this);
}
$(document).ready(function(){
var callbacks = {
onTemplatesLoaded: onTemplateLoadedCallback,
onEdit: reloadApp,
onView: reloadApp
};
init(reloadCallback, {
toolbar: toolbarTemplate,
parameters: parametersTemplate
}, callbacks);
});