diff --git a/lib/logs.js b/lib/logs.js index 3e301098..0e152e69 100644 --- a/lib/logs.js +++ b/lib/logs.js @@ -46,6 +46,18 @@ Logs.prototype.delete = function (filename, callback) { }) } +Logs.prototype.deleteAll = function (callback) { + this.logFiles(function (err, files) { + if (err) { + return callback(err) + } + + async.map(files, function (logFile, cb) { + fs.unlink(logFile.path, cb) + }, callback) + }) +} + Logs.prototype.generateLogFilePath = function (prefix, suffix) { return path.join(this.logsPath(), Logs.generateLogFileName(prefix, suffix)) } diff --git a/public/js/app/views/logs/list.js b/public/js/app/views/logs/list.js index a8654e0a..293bae3f 100644 --- a/public/js/app/views/logs/list.js +++ b/public/js/app/views/logs/list.js @@ -1,5 +1,7 @@ +var $ = require('jquery') var _ = require('underscore') var Marionette = require('marionette') +var sweetAlert = require('sweet-alert') var ListItemView = require('app/views/logs/list_item') var tpl = require('tpl/logs/list.html') @@ -9,5 +11,31 @@ var template = _.template(tpl) module.exports = Marionette.CompositeView.extend({ childView: ListItemView, childViewContainer: 'tbody', - template: template + template: template, + + events: { + 'click .delete-all': 'deleteAll' + }, + + deleteAll: function (event) { + var self = this + + sweetAlert({ + title: 'Are you sure?', + text: 'All logs will be deleted from the server!', + type: 'warning', + showCancelButton: true, + confirmButtonClass: 'btn-danger', + confirmButtonText: 'Yes, delete all!' + }, + function () { + $.ajax('/api/logs/all', { + type: 'DELETE', + success: function (data) { + self.collection.fetch() + }, + error: function () {} + }) + }) + } }) diff --git a/public/js/tpl/logs/list.html b/public/js/tpl/logs/list.html index d97609a6..b706f21d 100644 --- a/public/js/tpl/logs/list.html +++ b/public/js/tpl/logs/list.html @@ -5,8 +5,12 @@