nodebb/public/src/admin/manage/flags.js

144 lines
3.4 KiB
JavaScript

"use strict";
/*global define, socket, app, utils, bootbox, ajaxify*/
define('admin/manage/flags', [
'forum/infinitescroll',
'admin/modules/selectable',
'autocomplete',
'Chart'
], function(infinitescroll, selectable, autocomplete, Chart) {
var Flags = {};
Flags.init = function() {
$('.post-container .content img:not(.not-responsive)').addClass('img-responsive');
var params = utils.params();
$('#flag-sort-by').val(params.sortBy);
autocomplete.user($('#byUsername'));
handleDismiss();
handleDismissAll();
handleDelete();
handleInfiniteScroll();
handleGraphs();
};
function handleDismiss() {
$('.flags').on('click', '.dismiss', function() {
var btn = $(this);
var pid = btn.parents('[data-pid]').attr('data-pid');
socket.emit('posts.dismissFlag', pid, function(err) {
done(err, btn);
});
});
}
function handleDismissAll() {
$('#dismissAll').on('click', function() {
socket.emit('posts.dismissAllFlags', function(err) {
if (err) {
return app.alertError(err.message);
}
ajaxify.refresh();
});
});
}
function handleDelete() {
$('.flags').on('click', '.delete', function() {
var btn = $(this);
bootbox.confirm('Do you really want to delete this post?', function(confirm) {
if (!confirm) {
return;
}
var pid = btn.parents('[data-pid]').attr('data-pid');
var tid = btn.parents('[data-pid]').attr('data-tid');
socket.emit('posts.delete', {pid: pid, tid: tid}, function(err) {
done(err, btn);
});
});
});
}
function done(err, btn) {
if (err) {
return app.alertError(err.messaage);
}
btn.parents('[data-pid]').fadeOut(function() {
$(this).remove();
if (!$('.flags [data-pid]').length) {
$('.post-container').text('No flagged posts!');
}
});
}
function handleInfiniteScroll() {
infinitescroll.init(function(direction) {
if (direction < 0 && !$('.flags').length) {
return;
}
var params = utils.params();
var sortBy = params.sortBy || 'count';
var byUsername = params.byUsername || '';
infinitescroll.loadMore('posts.getMoreFlags', {
byUsername: byUsername,
sortBy: sortBy,
after: $('[data-next]').attr('data-next')
}, function(data, done) {
if (data.posts && data.posts.length) {
app.parseAndTranslate('admin/manage/flags', 'posts', {posts: data.posts}, function(html) {
$('[data-next]').attr('data-next', data.next);
$('.post-container').append(html);
html.find('img:not(.not-responsive)').addClass('img-responsive');
done();
});
} else {
done();
}
});
});
}
function handleGraphs() {
var dailyCanvas = document.getElementById('flags:daily');
var dailyLabels = utils.getDaysArray().map(function(text, idx) {
return idx % 3 ? '' : text;
});
if (utils.isMobile()) {
Chart.defaults.global.showTooltips = false;
}
var data = {
'flags:daily': {
labels: dailyLabels,
datasets: [
{
label: "",
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(151,187,205,1)",
data: ajaxify.data.analytics
}
]
}
};
dailyCanvas.width = $(dailyCanvas).parent().width();
new Chart(dailyCanvas.getContext('2d')).Line(data['flags:daily'], {
responsive: true,
animation: false
});
}
return Flags;
});