Newer
Older
function request(address) {
var xhr = new XMLHttpRequest();
/*xhr.onreadystatechange = function () {
//if (xhr.readyState == 4)
//alert("reponse = " + xhr.responseText);
};*/
xhr.open("GET", /*"http://127.0.0.1:5000/"+*/address, false);
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
xhr.send();
return (xhr.responseText);
}
function have_a_father(labels_tab, father_id) {
/**
* Search in labels_tab if there is a father of a child.
* If it as father return his position else return -1.
*/
for (var i = 0; labels_tab[i]; i++) {
if (labels_tab[i][0] == father_id)
return (i);
}
return (-1);
}
function add_in_tab(tab, add, posi) {
/**
* Put add in tab[posi] without remove the previous value.
*/
var result = [];
for (var i = 0; i < posi; i++)
result[i] = tab[i];
result.push(add);
for(var i = posi; tab[i]; i++)
result.push(tab[i]);
return(result);
}
function order_labels_list(labels_tab) {
/**
* Organise labels_tab in this order:
* Before: [[DadA, ...], [DadB, ...], [ChildA, ...], [ChildA, ...]]
* After : [[DadA, ...], [ChildA, ...], [ChildA, ...], [DadB, ...]]
* Dad before his childs. It's for print labels in the order.
* In the first loop we retrieve labels without father and in the
* second we add their childs at their right.
*/
var labels_tab_final = [];
var posi_father = -1;
for (var i = 0; labels_tab[i]; i++) {
if (!labels_tab[i][2])
labels_tab_final.push(labels_tab[i]);
}
for (var i = 0; labels_tab[i]; i++) {
posi_father = -1;
if (labels_tab[i][2]) {
posi_father = have_a_father(labels_tab_final, labels_tab[i][2]);
if (posi_father != -1)
labels_tab_final = add_in_tab(labels_tab_final, labels_tab[i], posi_father + 1);
}
}
return (labels_tab_final);
}
function revstr(str) {
/**
* Return reverse string pass in parameter.
*/
for (var i = 0, inter = '', str = str.split(''); i < str.length / 2; i++) {
inter = str[i];
str[i] = str[str.length - 1 - i];
str[str.length - 1 - i] = inter;
}
return (str.join(''));
}
function create_tab_lvl_intent(labels_tab) {
/**
* Create tab in each case represent a number of father
* of the label.
*/
var result = [];
var len = 0;
for (var i = 0; labels_tab[i]; i++) {
var inter = labels_tab[i];
while (inter[2] != undefined) {
len++;
inter = labels_tab[have_a_father(labels_tab, inter[2])];
}
//console.log(labels_tab[i][1]+' '+len);
result.push(len);
len = 0;
}
return (result);
}
function intent(labels_tab, tab_lvl_intent) {
/**
* Create a new labels_tab and add \t to label name due
* to tab_lvl_intent.
*/
var result = labels_tab;
for (var i = 0; i < tab_lvl_intent.length; i++) {
if (tab_lvl_intent[i] != 0) {
labels_tab[i][1] = revstr(labels_tab[i][1]);
labels_tab[i][1] = labels_tab[i][1].split('');
for (var p = 0; p < tab_lvl_intent[i]; p++) {
if ((p == 0 && tab_lvl_intent[i] <= 1) ||
(p == tab_lvl_intent[i] - 1))
labels_tab[i][1].push('────├');
else
labels_tab[i][1].push('────');
}
labels_tab[i][1] = labels_tab[i][1].join('');
labels_tab[i][1] = revstr(labels_tab[i][1]);
}
else {
var inter = '[' + labels_tab[i][1] + ']';
labels_tab[i][1] = inter;
}
result[i].push(0);
}
return (result);
}
function order_intent_labels_tab() {
/**
* Order labels tab and add the right number of \t before labels
* name.
*/
var labels_tab = JSON.parse(request("get_datas/labels"))
labels_tab = order_labels_list(labels_tab);
var lvl_intent = create_tab_lvl_intent(labels_tab);
var intent_labels_tab = intent(labels_tab, lvl_intent);
//console.log(intent_labels_tab);