This commit is contained in:
tidusjar 2016-06-27 16:16:33 +01:00
commit 6aae347297
2 changed files with 172 additions and 122 deletions

View file

@ -46,6 +46,8 @@ using NLog;
using MarkdownSharp; using MarkdownSharp;
using Nancy.Responses;
using PlexRequests.Api; using PlexRequests.Api;
using PlexRequests.Api.Interfaces; using PlexRequests.Api.Interfaces;
using PlexRequests.Core; using PlexRequests.Core;
@ -204,6 +206,8 @@ namespace PlexRequests.UI.Modules
Get["/scheduledjobs", true] = async (x, ct) => await GetScheduledJobs(); Get["/scheduledjobs", true] = async (x, ct) => await GetScheduledJobs();
Post["/scheduledjobs", true] = async (x, ct) => await SaveScheduledJobs(); Post["/scheduledjobs", true] = async (x, ct) => await SaveScheduledJobs();
Post["/clearlogs", true] = async (x, ct) => await ClearLogs();
} }
private async Task<Negotiator> Authentication() private async Task<Negotiator> Authentication()
@ -888,5 +892,23 @@ namespace PlexRequests.UI.Modules
? new JsonResponseModel { Result = true } ? new JsonResponseModel { Result = true }
: new JsonResponseModel { Result = false, Message = "Could not save to Db Please check the logs" }); : new JsonResponseModel { Result = false, Message = "Could not save to Db Please check the logs" });
} }
private async Task<Response> ClearLogs()
{
try
{
var allLogs = await LogsRepo.GetAllAsync();
foreach (var logEntity in allLogs)
{
await LogsRepo.DeleteAsync(logEntity);
}
return Response.AsJson(new JsonResponseModel { Result = true });
}
catch (Exception e)
{
Log.Error(e);
return Response.AsJson(new JsonResponseModel { Result = false, Message = e.Message });
}
}
} }
} }

View file

@ -1,123 +1,151 @@
@using PlexRequests.UI.Helpers @using PlexRequests.UI.Helpers
@Html.Partial("_Sidebar") @Html.Partial("_Sidebar")
@Html.LoadTableAssets() @Html.LoadTableAssets()
@{ @{
var baseUrl = Html.GetBaseUrl(); var baseUrl = Html.GetBaseUrl();
var formAction = "/admin/loglevel"; var formAction = "/admin/loglevel";
if (!string.IsNullOrEmpty(baseUrl.ToHtmlString())) var clearAction = "/admin/clearlogs";
{ if (!string.IsNullOrEmpty(baseUrl.ToHtmlString()))
formAction = "/" + baseUrl.ToHtmlString() + formAction; {
} formAction = "/" + baseUrl.ToHtmlString() + formAction;
} clearAction = "/" + baseUrl.ToHtmlString() + clearAction;
}
<div class="col-sm-8 col-sm-push-1"> }
<fieldset>
<legend>Logs</legend> <div class="col-sm-8 col-sm-push-1">
<form method="post" id="mainForm" action="@formAction"> <fieldset>
<div class="form-group"> <legend>Logs</legend>
<label for="logLevel" class="control-label">Log Level</label> <form method="post" id="mainForm" action="@formAction">
<div id="logLevel"> <div class="form-group">
<select class="form-control" id="selected"> <label for="logLevel" class="control-label">Log Level</label>
<option id="Trace" value="0">Trace</option> <div id="logLevel">
<option id="Debug" value="1">Debug</option> <select class="form-control" id="selected">
<option id="Info" value="2">Info</option> <option id="Trace" value="0">Trace</option>
<option id="Warn" value="3">Warn</option> <option id="Debug" value="1">Debug</option>
<option id="Error" value="4">Error</option> <option id="Info" value="2">Info</option>
<option id="Fatal" value="5">Fatal</option> <option id="Warn" value="3">Warn</option>
</select> <option id="Error" value="4">Error</option>
</div> <option id="Fatal" value="5">Fatal</option>
</div> </select>
<div class="form-group"> </div>
<div> </div>
<button id="save" type="submit" class="btn btn-primary-outline ">Submit</button> <div class="form-group">
</div> <div>
</div> <button id="save" type="submit" class="btn btn-primary-outline ">Submit</button>
</form> </div>
</div>
<table id="example" class="table table-striped table-hover table-responsive"> </form>
<thead>
<tr> <form method="post" id="clearForm" action="@clearAction">
<th>Message</th> <button id="clearLogs" type="submit" class="btn btn-danger-outline ">Clear Logs</button>
<th>Area</th> </form>
<th>Log Level</th>
<th>Date</th> <table id="example" class="table table-striped table-hover table-responsive">
</tr> <thead>
</thead> <tr>
<th>Message</th>
</table> <th>Area</th>
</fieldset> <th>Log Level</th>
</div> <th>Date</th>
</tr>
</thead>
<script> </table>
$(function () { </fieldset>
var baseUrl = '@Html.GetBaseUrl()'; </div>
var logsUrl = "/admin/loadlogs";
var url = createBaseUrl(baseUrl, logsUrl);
$('#example').DataTable({ <script>
"ajax": url, $(function () {
"columns": [ var baseUrl = '@Html.GetBaseUrl()';
{ "data": "message" },
{ "data": "logger" }, var logsUrl = "/admin/loadlogs";
{ "data": "level" }, var url = createBaseUrl(baseUrl, logsUrl);
{ "data": "dateString" } $('#example').DataTable({
], "ajax": url,
"order": [[3, "desc"]] "columns": [
}); { "data": "message" },
{ "data": "logger" },
{ "data": "level" },
var logUrl = "/admin/loglevel"; { "data": "dateString" }
logUrl = createBaseUrl(baseUrl, logUrl); ],
$.ajax({ "order": [[3, "desc"]]
type: "get", });
url: logUrl,
dataType: "json",
success: function (response) { var logUrl = "/admin/loglevel";
if (response && response.length > 0) { logUrl = createBaseUrl(baseUrl, logUrl);
$("#selected > option").each(function (level) { $.ajax({
var $opt = $(this); type: "get",
if (response[0].ordinal == level) { url: logUrl,
$opt.prop("selected", "selected"); dataType: "json",
} success: function (response) {
}); if (response && response.length > 0) {
} $("#selected > option").each(function (level) {
}, var $opt = $(this);
error: function (e) { if (response[0].ordinal == level) {
console.log(e); $opt.prop("selected", "selected");
generateNotify("Something went wrong!", "danger"); }
} });
}); }
},
$('#save').click(function (e) { error: function (e) {
e.preventDefault(); console.log(e);
generateNotify("Something went wrong!", "danger");
var logLevel = $("#logLevel option:selected").val(); }
});
var $form = $("#mainForm");
var data = "level=" + logLevel; $('#save').click(function (e) {
e.preventDefault();
$.ajax({
type: $form.prop("method"), var logLevel = $("#logLevel option:selected").val();
data: data,
url: $form.prop("action"), var $form = $("#mainForm");
dataType: "json", var data = "level=" + logLevel;
success: function (response) {
if (response.result === true) { $.ajax({
generateNotify(response.message, "success"); type: $form.prop("method"),
} else { data: data,
generateNotify(response.message, "warning"); url: $form.prop("action"),
} dataType: "json",
}, success: function (response) {
error: function (e) { if (response.result === true) {
console.log(e); generateNotify(response.message, "success");
generateNotify("Something went wrong!", "danger"); } else {
} generateNotify(response.message, "warning");
}); }
}); },
error: function (e) {
console.log(e);
}); generateNotify("Something went wrong!", "danger");
}
});
});
$('#clearLogs').click(function() {
e.preventDefault();
var $form = $("#clearForm");
$.ajax({
type: $form.prop("method"),
url: $form.prop("action"),
dataType: "json",
success: function (response) {
if (response.result === true) {
generateNotify(response.message, "success");
} else {
generateNotify(response.message, "warning");
}
},
error: function (e) {
console.log(e);
generateNotify("Something went wrong!", "danger");
}
});
});
});
</script> </script>