144 lines
3.4 KiB
JavaScript
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;
|
|
}); |