mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-14 01:02:59 -07:00
234 lines
9.3 KiB
HTML
234 lines
9.3 KiB
HTML
<%inherit file="base.html"/>
|
|
<%!
|
|
from plexpy import helpers
|
|
%>
|
|
|
|
<%def name="headIncludes()">
|
|
<link rel="stylesheet" href="${http_root}css/dataTables.bootstrap.css">
|
|
<link rel="stylesheet" href="${http_root}css/plexpy-dataTables.css">
|
|
<style>
|
|
td {word-break: break-all;}
|
|
</style>
|
|
</%def>
|
|
|
|
<%def name="headerIncludes()">
|
|
</%def>
|
|
|
|
<%def name="body()">
|
|
<div class='container-fluid'>
|
|
<div class='table-card-header'>
|
|
<div class="header-bar">
|
|
<span><i class="fa fa-list-alt"></i> Logs</span>
|
|
</div>
|
|
<div class="button-bar">
|
|
<button class="btn btn-dark" id="clear-logs"><i class="fa fa-trash-o"></i> Clear log</button>
|
|
<button class="btn btn-dark" id="clear-notify-logs" style="display: none;"><i class="fa fa-trash-o"></i> Clear log</button>
|
|
</div>
|
|
</div>
|
|
<div class='table-card-back'>
|
|
<div>
|
|
<ul class="nav nav-pills" role="tablist">
|
|
<li role="presentation" class="active"><a id="plexpy-logs-btn" href="#tabs-1" aria-controls="tabs-1" role="tab" data-toggle="tab">PlexPy Logs</a></li>
|
|
<li role="presentation"><a id="plex-logs-btn" href="#tabs-2" aria-controls="tabs-2" role="tab" data-toggle="tab">Plex Media Server Logs</a></li>
|
|
<li role="presentation"><a id="plex-scanner-logs-btn" href="#tabs-3" aria-controls="tabs-3" role="tab" data-toggle="tab">Plex Media Scanner Logs</a></li>
|
|
<li role="presentation"><a id="notification-logs-btn" href="#tabs-4" aria-controls="tabs-4" role="tab" data-toggle="tab">Notification Logs</a></li>
|
|
</ul>
|
|
<div class="tab-content">
|
|
<div role="tabpanel" class="tab-pane active" id="tabs-1">
|
|
<table class="display" id="log_table" width="100%">
|
|
<thead>
|
|
<tr>
|
|
<th class="min-tablet" align='left' id="timestamp">Timestamp</th>
|
|
<th class="desktop" align='left' id="level">Level</th>
|
|
<th class="all" align='left' id="message">Message</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div role="tabpanel" class="tab-pane" id="tabs-2">
|
|
<table class="display" id="plex_log_table" width="100%">
|
|
<thead>
|
|
<tr>
|
|
<th align='left' id="plex_timestamp">Timestamp</th>
|
|
<th align='left' id="plex_level">Level</th>
|
|
<th align='left' id="plex_message">Message</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div role="tabpanel" class="tab-pane" id="tabs-3">
|
|
<table class="display" id="plex_scanner_log_table" width="100%">
|
|
<thead>
|
|
<tr>
|
|
<th align='left' id="plex_scanner_timestamp">Timestamp</th>
|
|
<th align='left' id="plex_scanner_level">Level</th>
|
|
<th align='left' id="plex_scanner_message">Message</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody></tbody>
|
|
</table>
|
|
</div>
|
|
<div role="tabpanel" class="tab-pane" id="tabs-4">
|
|
<table class="display" id="notification_log_table" width="100%">
|
|
<thead>
|
|
<tr>
|
|
<th align='left' id="notification_timestamp">Timestamp</th>
|
|
<th align='left' id="notification_agent_name">Agent</th>
|
|
<th align='left' id="notification_action">Action</th>
|
|
<th align='left' id="notification_poster_url">Subject Text</th>
|
|
<th align='left' id="notification_poster_url">Body Text</th>
|
|
<th align='left' id="notification_poster_url">Script Args</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody></tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<br>
|
|
<div align="center">Refresh rate:
|
|
<select id="refreshrate" onchange="setRefresh()">
|
|
<option value="0" selected="selected">No Refresh</option>
|
|
<option value="5">5 Seconds</option>
|
|
<option value="15">15 Seconds</option>
|
|
<option value="30">30 Seconds</option>
|
|
<option value="60">60 Seconds</option>
|
|
<option value="300">5 Minutes</option>
|
|
<option value="600">10 Minutes</option>
|
|
</select>
|
|
</div>
|
|
</%def>
|
|
|
|
<%def name="javascriptIncludes()">
|
|
<script src="${http_root}js/jquery.dataTables.min.js"></script>
|
|
<script src="${http_root}js/dataTables.bootstrap.min.js"></script>
|
|
<script src="${http_root}js/dataTables.bootstrap.pagination.js"></script>
|
|
<script src="${http_root}js/moment-with-locale.js"></script>
|
|
<script src="${http_root}js/tables/logs.js"></script>
|
|
<script src="${http_root}js/tables/plex_logs.js"></script>
|
|
<script src="${http_root}js/tables/notification_logs.js"></script>
|
|
<script>
|
|
|
|
$(document).ready(function() {
|
|
LoadPlexPyLogs();
|
|
clearSearchButton('log_table', log_table);
|
|
});
|
|
|
|
function LoadPlexPyLogs() {
|
|
log_table_options.ajax = {
|
|
url: "getLog"
|
|
}
|
|
log_table = $('#log_table').DataTable(log_table_options);
|
|
}
|
|
|
|
function LoadPlexLogs() {
|
|
plex_log_table_options.ajax = {
|
|
url: "get_plex_log?log_type=server"
|
|
}
|
|
plex_log_table = $('#plex_log_table').DataTable(plex_log_table_options);
|
|
}
|
|
|
|
function LoadPlexScannerLogs() {
|
|
plex_log_table_options.ajax = {
|
|
url: "get_plex_log?log_type=scanner"
|
|
}
|
|
plex_scanner_log_table = $('#plex_scanner_log_table').DataTable(plex_log_table_options);
|
|
}
|
|
|
|
function LoadNotificationLogs() {
|
|
notification_log_table_options.ajax = {
|
|
url: "get_notification_log",
|
|
type: 'post',
|
|
data: function (d) {
|
|
return {
|
|
json_data: JSON.stringify(d)
|
|
};
|
|
}
|
|
}
|
|
notification_log_table = $('#notification_log_table').DataTable(notification_log_table_options);
|
|
}
|
|
|
|
$("#plexpy-logs-btn").click(function () {
|
|
$("#clear-logs").show();
|
|
$("#clear-notify-logs").hide();
|
|
LoadPlexPyLogs();
|
|
clearSearchButton('log_table', log_table);
|
|
});
|
|
|
|
$("#plex-logs-btn").click(function () {
|
|
$("#clear-logs").hide();
|
|
$("#clear-notify-logs").hide();
|
|
LoadPlexLogs();
|
|
clearSearchButton('plex_log_table', plex_log_table);
|
|
});
|
|
|
|
$("#plex-scanner-logs-btn").click(function () {
|
|
$("#clear-logs").hide();
|
|
$("#clear-notify-logs").hide();
|
|
LoadPlexScannerLogs();
|
|
clearSearchButton('plex_scanner_log_table', plex_scanner_log_table);
|
|
});
|
|
|
|
$("#notification-logs-btn").click(function () {
|
|
$("#clear-logs").hide();
|
|
$("#clear-notify-logs").show();
|
|
LoadNotificationLogs();
|
|
clearSearchButton('notification_log_table', notification_log_table);
|
|
});
|
|
|
|
$("#clear-logs").click(function () {
|
|
var r = confirm("Are you sure you want to clear the PlexPy log?");
|
|
if (r == true) {
|
|
window.location.href = "clearLogs";
|
|
}
|
|
});
|
|
|
|
$("#clear-notify-logs").click(function () {
|
|
var r = confirm("Are you sure you want to clear the PlexPy notification log?");
|
|
if (r == true) {
|
|
$.ajax({
|
|
url: 'clearNotifyLogs',
|
|
type: 'POST',
|
|
success: function (data) {
|
|
notification_log_table.draw();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
var timer;
|
|
function setRefresh()
|
|
{
|
|
refreshrate = document.getElementById('refreshrate');
|
|
if(refreshrate != null)
|
|
{
|
|
if(timer)
|
|
{
|
|
clearInterval(timer);
|
|
}
|
|
if(refreshrate.value != 0)
|
|
{
|
|
timer = setInterval(function() {
|
|
if ($("#tabs-1").hasClass("active")) {
|
|
log_table.ajax.reload();
|
|
} else if ($("#tabs-2").hasClass("active")) {
|
|
plex_log_table.ajax.reload();
|
|
} else if ($("#tabs-3").hasClass("active")) {
|
|
plex_scanner_log_table.ajax.reload();
|
|
} else if ($("#tabs-4").hasClass("active")) {
|
|
notification_log_table.ajax.reload();
|
|
}
|
|
}, 1000*refreshrate.value);
|
|
}
|
|
}
|
|
}
|
|
|
|
</script>
|
|
</%def>
|