You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
7.5 KiB
205 lines
7.5 KiB
let comment_action = 'add'
|
|
const event_comment = (function ($, window, jQuery) {
|
|
return {
|
|
"add_comment": function (comment) {
|
|
|
|
$('#commentTBody').append(
|
|
'<tr>' +
|
|
'<td>'+
|
|
comment.name +
|
|
'</td>'+
|
|
'<td>'+
|
|
comment.date +
|
|
'</td>'+
|
|
|
|
'<td>'+
|
|
comment.rate +
|
|
'</td>'+
|
|
'<td>'+
|
|
comment.comment +
|
|
'</td>'+
|
|
'<td class="text-center" style="display: flex;">' +
|
|
'<button style="margin-right: 10px;" class="btn btn-primary btn-small edit_comment" type="button">Edit</button>' +
|
|
'<button class="btn btn-outline btn-small remove_comment" type="button">Supprimer</button>' +
|
|
'</td>'+
|
|
'<td style="display:none">'+
|
|
comment.id +
|
|
'</td>'+
|
|
'</tr>'
|
|
)
|
|
event_comment.get_review_avg()
|
|
|
|
},
|
|
"edit_comment": function(cells) {
|
|
cells[5].innerText = cells[5].innerText == '' ? '0': cells[5].innerText
|
|
$('#comment_name').val(cells[0].innerText)
|
|
$('#comment_date').val(app._form.format_inputs("unformat_datetime", cells[1].innerText))
|
|
$('#comment_rate').val(cells[2].innerText)
|
|
$('#comment_content').val(cells[3].innerText)
|
|
$('#comment_id').val(cells[5].innerText)
|
|
},
|
|
"update_comment": function() {
|
|
const trCount = $('#commentTBody tr')
|
|
if(trCount.length>0) {
|
|
for(let i=0; i < trCount.length; i++) {
|
|
const tds = trCount[i].cells
|
|
if(tds[5].innerText == $('#comment_id').val()) {
|
|
if(tds[5].innerText == '0') {
|
|
tds[5].innerText =''
|
|
}
|
|
tds[0].innerText = $('#comment_name').val()
|
|
tds[1].innerText = app._form.format_inputs("date", $('#comment_date').val())
|
|
tds[2].innerText = $('#comment_rate').val()
|
|
tds[3].innerText = $('#comment_content').val()=='0'?'': $('#comment_content').val()
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
event_comment.get_review_avg()
|
|
},
|
|
"format_comments": function () {
|
|
let comments = []
|
|
const trCount = $('#commentTBody tr')
|
|
if(trCount.length>0) {
|
|
for(let i=0; i < trCount.length; i++) {
|
|
const tds = trCount[i].cells
|
|
comments.push({
|
|
name: tds[0].innerText,
|
|
date: tds[1].innerText,
|
|
rate: tds[2].innerText,
|
|
comment: tds[3].innerText,
|
|
id: tds[5].innerText=='' ? null: parseInt(tds[5].innerText)
|
|
})
|
|
}
|
|
|
|
}
|
|
return comments
|
|
},
|
|
"get_review_avg" : function () {
|
|
const trCount = $('#commentTBody tr')
|
|
let validCommentCount = 0;
|
|
if(trCount.length>0) {
|
|
let avgTotal = 0
|
|
for(let i=0; i < trCount.length; i++) {
|
|
const tds = trCount[i].cells
|
|
if(!isNaN(parseInt(tds[2].innerText))) {
|
|
avgTotal += parseInt(tds[2].innerText)
|
|
validCommentCount++
|
|
}
|
|
}
|
|
|
|
$('#comment_rate_avg').text(event_comment.format_review_avg(avgTotal, validCommentCount))
|
|
} else {
|
|
$('#comment_rate_avg').text('n/a')
|
|
}
|
|
},
|
|
"format_review_avg": function(avgTotal, numComments) {
|
|
let avg = avgTotal / numComments
|
|
if(Number.isInteger(avg)) {
|
|
return avg>0?avg + '/10':'n/a'
|
|
}
|
|
return avg.toFixed(1) + '/10'
|
|
},
|
|
"validate_comment": function(){
|
|
if(!$('#comment_name').val()) {
|
|
$('#comment_name_error').text('Ce champ est obligatoire.')
|
|
$('#comment_name').focus()
|
|
return false;
|
|
// } else if(!$('#comment_rate').val()) {
|
|
// $('#comment_rate_error').text('Ce champ est obligatoire.')
|
|
// $('#comment_rate').focus()
|
|
// return false;
|
|
} else if(!$('#comment_date').val()) {
|
|
$('#comment_date_error').text('Ce champ est obligatoire.')
|
|
$('#comment_date').focus()
|
|
return false;
|
|
} else if(!$('#comment_content').val()) {
|
|
$('#comment_content_error').text('Ce champ est obligatoire.')
|
|
$('#comment_content').focus()
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
},
|
|
"rate_validator": function(rate) {
|
|
let val = rate.val();
|
|
if(isNaN(val)){
|
|
val = val.replace(/[^0-9]/g,'');
|
|
}
|
|
val = val.substring(0,1) === '0' ? '':val
|
|
if(parseInt(val)>10) {
|
|
val = val.substring(0,1)
|
|
}
|
|
rate.val(val);
|
|
},
|
|
"clear_fields": function() {
|
|
$('#comment_name').val(null)
|
|
$('#comment_rate').val(null)
|
|
$('#comment_date').val(null)
|
|
$('#comment_content').val(null)
|
|
$('#comment_id').val('')
|
|
comment_action='add'
|
|
$('#addComment').text('Add comment')
|
|
$('#comment_form_label>b').text('Add Comment')
|
|
}
|
|
}
|
|
})(jQuery, this)
|
|
|
|
$(document).ready(function() {
|
|
$('#commentTBody').on('click', '.remove_comment', function () {
|
|
$(this).closest('tr').remove();
|
|
event_comment.get_review_avg()
|
|
});
|
|
|
|
$('#commentTBody').on('click', '.edit_comment', function () {
|
|
comment_action = 'edit'
|
|
event_comment.edit_comment($(this).closest('tr')[0].cells)
|
|
$('#comment_name').focus()
|
|
$('#addComment').text('Save Changes')
|
|
$('#comment_form_label>b').text('Edit Comment')
|
|
});
|
|
|
|
$('.comment-modal-save').on('click', function () {
|
|
event_comment.update_comment();
|
|
});
|
|
|
|
$('#clearComment').on('click', function () {
|
|
event_comment.clear_fields()
|
|
});
|
|
|
|
$('#addComment').on('click', function() {
|
|
if(event_comment.validate_comment()) {
|
|
if(comment_action === 'add') {
|
|
let comment = {
|
|
name: $('#comment_name').val(),
|
|
rate: $('#comment_rate').val(),
|
|
date: app._form.format_inputs("date", $('#comment_date').val()),
|
|
comment: $('#comment_content').val(),
|
|
id: ''
|
|
}
|
|
event_comment.add_comment(comment)
|
|
} else {
|
|
event_comment.update_comment()
|
|
}
|
|
event_comment.clear_fields()
|
|
}
|
|
})
|
|
|
|
$('#comment_name').on('input', function(){
|
|
$('#comment_name_error').text('')
|
|
})
|
|
$('#comment_rate').on('input', function(){
|
|
$('#comment_rate_error').text('')
|
|
})
|
|
$('#comment_date').on('input', function(){
|
|
$('#comment_date_error').text('')
|
|
})
|
|
$('#comment_content').on('input', function(){
|
|
$('#comment_content_error').text('')
|
|
})
|
|
|
|
$('#comment_rate').on('keyup', () => {
|
|
event_comment.rate_validator($('#comment_rate'))
|
|
})
|
|
});
|