-
Notifications
You must be signed in to change notification settings - Fork 0
/
scripts.js
111 lines (96 loc) · 2.63 KB
/
scripts.js
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
YUI({filter: 'raw'}).use('node', 'datatable', 'transition', 'app', 'gallery-model-sync-rest', function (Y) {
var addClues = Y.one('#addClues');
var displayClues = Y.one('#displayClues');
var Clue = Y.Base.create('clue', Y.Model, [Y.ModelSync.REST], {
root: '/clues'
});
var Clues = Y.Base.create('clues', Y.ModelList, [Y.ModelSync.REST], {
model: Clue,
url : '/clues'
});
var clueList = new Clues();
var clueTable = new Y.DataTable({
data: clueList
});
var clueFields = [];
Y.io('/clues/columns', {
method : 'GET',
on: {
success: function (txId, res) {
clueFields = Y.JSON.parse(res.responseText);
init(Y.JSON.parse(res.responseText));
},
failure: function (txId, res) {
console.log('failure');
console.log(res);
}
}
});
function init (columns) {
clueTable.set('columns', columns);
clueTable.render(displayClues.one('#table'));
clueList.load(function (err, data) {
if (data.length === 0) return addClues.show();
displayClues.show();
});
}
displayClues.one('#add').on('click', function () {
addClues.one('#text').set('value', ''),
addClues.one('#text').set('placeholder', clueFields.join(',')),
displayClues.hide();
addClues.show();
});
addClues.one('#submit').on('click', function () {
var clues = parseCSV(
addClues.one('#text').get('value'),
clueFields
);
clueTable.set('columns', clues.columns);
clueList.reset(clues.data);
displayClues.one('#add').hide();
displayClues.one('#edit').show();
displayClues.one('#save').show();
addClues.hide();
displayClues.show();
});
displayClues.one('#save').on('click', function () {
// TODO upload ModelList
displayClues.one('#add').show();
displayClues.one('#edit').hide();
displayClues.one('#save').hide();
});
displayClues.one('#edit').on('click', function () {
displayClues.hide();
addClues.show();
});
addClues.one('#cancel').on('click', function () {
addClues.hide();
displayClues.show();
});
});
function parseCSV (text, names) {
var columns = [];
var data = [];
var lines = text.split('\n');
names.forEach(function (name) {
columns.push(name);
});
if (columns.length === 0) {
var firstLine = lines.shift();
columns = firstLine.split(',');
}
lines.forEach(function (line) {
if (line === '') return;
var o = {};
var values = line.split(',');
values.forEach(function (value, i) {
var name = columns[i];
o[name] = value;
});
data.push(o);
});
return {
columns: columns,
data: data
};
}