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
121
122
123
124
125
try {
let y_sel = $('[name="yyyy"]'),
m_sel = $('[name="mm"]'),
j_sel = $('[name="jj"]'),
birthdate = $('[name="birthdate"]'),
save_btn = $('#save');
var make_save_button_active = function() {
if (! save_btn.hasClass('btn--primary')) {
save_btn.addClass('btn--primary');
save_btn.css({'cursor':'pointer'});
}
};
var update_birthdate = function() {
birthdate.val(y_sel.val() + '-' + m_sel.val() + '-' + j_sel.val());
make_save_button_active();
};
var init_birthdate_selects = function() {
let [
y,
m,
d
] = birthdate.val().split('-');
var now = new Date();
var end_year = new Date(now.setYear(now.getFullYear() - 15)).getFullYear();
for (var i=100; i>0; i--) {
let opt = $('<option>').val(end_year-i)
.text(end_year-i);
if (end_year-i == y) opt.prop('selected', true);
opt.appendTo(y_sel);
}
for (var k=1; k<=12; k++) {
let mth = k.pad(2);
let opt = $('<option>').val(mth)
.text(mth);
if (m == mth) opt.prop('selected', true);
opt.appendTo(m_sel);
}
for (var l=1; l<=31; l++) {
let day = l.pad(2);
let opt = $('<option>').val(day)
.text(day);
if (d == day) opt.prop('selected', true);
opt.appendTo(j_sel);
}
y_sel.change(update_birthdate);
m_sel.change(update_birthdate);
j_sel.change(update_birthdate);
};
var save_data = function() {
//Transmit only what has been changed
var changed = {};
for (attr in original) {
var current_val = $('[name="' + attr + '"]').val();
if (attr == 'sex') {
current_val = $('[name="' + attr + '"]:checked').val();
}
if (current_val.trim() != original[attr]) {
if (! (original[attr] == 'False' && current_val.length ==0))
changed[attr] = current_val.trim();
}
}
// console.log(changed)
if (Object.keys(changed).length > 0) {
if ('firstname' in changed || 'lastname' in changed) {
changed['name'] = $('[name="firstname"]').val()
+ name_sep
+ $('[name="lastname"]').val();
}
delete changed['email'];
post_form(
'/website/update_info_perso',
changed,
function(err, result) {
if (typeof result.res.process != "undefined" &&
typeof result.res.process.update != "undefined" &&
result.res.process.update == true) {
save_btn.removeClass('btn--primary');
save_btn.css({'cursor':'default'});
for (attr in changed) {
if (attr != 'name')
original[attr] = changed[attr];
}
alert('Modifications enregistrées !');
} else {
alert('Une erreur est intervenue pendant l\'enregistrement');
}
}
);
} else {
alert('Aucune modification significative détectée');
}
};
if (typeof original.sex != "undefined") {
$('input[name="sex"][value="' + original.sex + '"]').prop('checked', true);
}
init_birthdate_selects();
$('input').change(make_save_button_active);
save_btn.click(function() {
if ($(this).hasClass('btn--primary') && is_time_to('save_perso_data')) {
save_data();
}
});
} catch (error) {
err_obj = {msg: error.name + ' : ' + error.message, ctx: 'info_perso'};
report_JS_error(error, 'website');
}