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
118
119
120
|
var loader;
var autocompleteList;
YUI().use('node-base', 'io-base', 'io-form', 'io-queue', 'json', function (Y) {
function markAsChanged(input) {
input.setAttribute("style", "background-color: #faa");
}
function markAsRegistered(input) {
input.setAttribute("style", "background-color: #afa");
}
function registerScoreInputChange(event, input, row) {
var id = row.getAttribute("mulk:id");
var inputnum = 0;
var inputSiblings = input.parentNode.childNodes;
for (; inputnum < inputSiblings.length; inputnum++) {
if (inputSiblings[inputnum] == input) {
break;
}
};
Y.io("update-student-score",
{ 'on' : { 'complete': function(id, o, args) {
try { Y.log(o.responseText); Y.JSON.parse(o.responseText); }
catch(e) { return null; }
markAsRegistered(input);
} },
'data': "id=" + id + "&score-number=" + inputnum + "&score=" + input.value });
}
function makeScoreInput(cell, value) {
var input = document.createElement('input');
input.setAttribute('type', 'text');
input.setAttribute('maxlength', '3');
input.setAttribute('size', '3');
if (value != undefined) {
input.value = value;
}
cell.appendChild(input);
Y.on("keyup", function(e) { ensureFreeInput(cell); }, input, Y);
Y.on("keyup", function(e) { markAsChanged(input); }, input, Y);
Y.on("change", registerScoreInputChange, input, Y, input, cell.parentNode);
return input;
};
function ensureFreeInput(scoreCell) {
if (!(scoreCell.lastChild.value == undefined || scoreCell.lastChild.value == "")) {
return makeScoreInput(scoreCell);
} else {
return scoreCell.lastChild;
}
};
function updateStudentRowFromName(event, nameInput, scoreCell) {
Y.log(event);
Y.log(nameInput);
Y.log(scoreCell);
function doUpdate(id, o, args) {
ensureFreeStudentRow();
var data = o.responseText;
try {
var student = Y.JSON.parse(data);
} catch (e) {
return null;
};
Y.log(student);
scoreCell.parentNode.setAttribute("mulk:id", student.id);
while (scoreCell.firstChild) {
scoreCell.removeChild(scoreCell.firstChild);
};
for (var i = 0; i < student.score.length; i++) {
var x = student.score[i];
makeScoreInput(scoreCell, x);
};
var freeInput = makeScoreInput(scoreCell);
freeInput.focus();
}
var request = Y.io("find-student", { 'on' : { 'complete': doUpdate },
'data': "name=" + nameInput.value });
};
function makeStudentRow() {
var table = document.getElementById('ergebnisse');
var num = table.rows.length;
var row = table.insertRow(num);
var cell = row.insertCell(0);
var input = document.createElement('input');
var completion = document.createElement('div');
input.setAttribute('type', 'text');
completion.setAttribute('class', 'autocomplete');
cell.appendChild(input);
cell.appendChild(completion);
new Autocompleter.Local(input, completion, autocompleteList, { 'fullSearch' : true, 'partialChars': 1 });
var cell = row.insertCell(1);
makeScoreInput(cell);
Y.on("blur", updateStudentRowFromName, input, Y, input, cell);
return row;
};
function ensureFreeStudentRow() {
var table = document.getElementById('ergebnisse')
var num = table.rows.length;
var input = table.rows[num - 1].cells[0].firstChild;
if (!(input.value == undefined || input.value == "")) {
return makeStudentRow();
} else {
return table.lastChild;
}
};
return Y.on('domready', makeStudentRow);
});
|