This commit is contained in:
herby2212 2023-02-26 17:33:03 -08:00 committed by GitHub
commit a79793fe55
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 215 additions and 104 deletions

View file

@ -2425,6 +2425,18 @@ a .library-user-instance-box:hover {
.home-padded-header .button-bar { .home-padded-header .button-bar {
float: left; float: left;
} }
#history-option-container {
float: right;
background-color: #333;
padding: 1rem;
border-radius: 0.6rem;
}
.history-option-bar {
margin: 0.2rem;
}
.history-option-button-group {
display: table-cell;
}
.home-platforms { .home-platforms {
} }
.home-platforms ul, .home-platforms ul,

View file

@ -16,57 +16,74 @@
</div> </div>
% endif % endif
<div class='table-card-header'> <div class='table-card-header'>
<div class="header-bar"> <div class="header-bar" style="margin-top: 2.4rem;">
<span><i class="fa fa-history"></i> History</span> <span><i class="fa fa-history"></i> History</span>
</div> </div>
<div class="button-bar"> <div id="history-option-container" class="container">
% if _session['user_group'] == 'admin': <div class="button-bar history-option-bar" style="float: left;">
<div class="alert alert-danger alert-edit" role="alert" id="row-edit-mode-alert"><i class="fa fa-exclamation-triangle"></i>&nbsp</div> % if _session['user_group'] == 'admin':
<div class="btn-group"> <div class="alert alert-danger alert-edit" role="alert" id="row-edit-mode-alert"><i class="fa fa-exclamation-triangle"></i>&nbsp</div>
<button class="btn btn-danger btn-edit" data-toggle="button" aria-pressed="false" autocomplete="off" id="row-edit-mode"> <div class="btn-group">
<i class="fa fa-trash-o"></i> Delete mode <button class="btn btn-danger btn-edit" data-toggle="button" aria-pressed="false" autocomplete="off" id="row-edit-mode">
</button> <i class="fa fa-trash-o"></i> Delete mode
</button>
</div>
% endif
% if _session['user_group'] == 'admin':
<div class="btn-group" id="user-selection">
<label>
<select name="history-user" id="history-user" class="btn" style="color: inherit;">
<option value="">All Users</option>
<option disabled>&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;</option>
</select>
</label>
</div>
% endif
</div> </div>
% endif <div class="button-bar history-option-bar">
% if _session['user_group'] == 'admin': <div class="btn-group">
<div class="btn-group" id="user-selection"> <button class="btn btn-dark refresh-history-button" id="refresh-history-list"><i class="fa fa-refresh"></i> Refresh history</button>
<label> </div>
<select name="history-user" id="history-user" class="btn" style="color: inherit;"> <div class="btn-group colvis-button-bar"></div>
<option value="">All Users</option>
<option disabled>&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;</option>
</select>
</label>
</div> </div>
% endif <div class="button-bar history-option-bar">
<div class="btn-group" data-toggle="buttons" id="media_type-selection"> <div class="btn-group-justified history-option-button-group" data-toggle="buttons" id="media_type-selection" style="padding-right: 0.5rem;">
<label class="btn btn-dark btn-filter"> <label class="btn btn-dark btn-filter">
<input type="checkbox" name="media_type-filter" id="history-media_type-movie" value="movie" autocomplete="off"><i class="fa fa-film"></i> Movies <input type="checkbox" name="media_type-filter" id="history-media_type-movie" value="movie" autocomplete="off"><i class="fa fa-film"></i> Movies
</label> </label>
<label class="btn btn-dark btn-filter"> <label class="btn btn-dark btn-filter">
<input type="checkbox" name="media_type-filter" id="history-media_type-episode" value="episode" autocomplete="off"><i class="fa fa-television"></i> TV Shows <input type="checkbox" name="media_type-filter" id="history-media_type-episode" value="episode" autocomplete="off"><i class="fa fa-television"></i> TV Shows
</label> </label>
<label class="btn btn-dark btn-filter"> <label class="btn btn-dark btn-filter">
<input type="checkbox" name="media_type-filter" id="history-media_type-track" value="track" autocomplete="off"><i class="fa fa-music"></i> Music <input type="checkbox" name="media_type-filter" id="history-media_type-track" value="track" autocomplete="off"><i class="fa fa-music"></i> Music
</label> </label>
<label class="btn btn-dark btn-filter"> <label class="btn btn-dark btn-filter">
<input type="checkbox" name="media_type-filter" id="history-media_type-live" value="live" autocomplete="off"><i class="fa fa-broadcast-tower"></i> Live TV <input type="checkbox" name="media_type-filter" id="history-media_type-live" value="live" autocomplete="off"><i class="fa fa-broadcast-tower"></i> Live TV
</label> </label>
</div>
<div class="btn-group-justified history-option-button-group" data-toggle="buttons" id="network_type-selection" style="padding-right: 0.5rem;">
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="network_type-filter" id="history-network_type-lan" value="lan" autocomplete="off"><i class="fa fa-server"></i> Local Play
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="network_type-filter" id="history-network_type-wan" value="wan" autocomplete="off"><i class="fa fa-globe"></i> Remote Play
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="network_type-filter" id="history-network_type-cellular" value="cellular" autocomplete="off"><i class="fa fa-broadcast-tower"></i> Mobile Play
</label>
</div>
<div class="btn-group-justified history-option-button-group" data-toggle="buttons" id="transcode_decision-selection">
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-direct_play" value="direct play" autocomplete="off"><i class="fa fa-play-circle"></i> Direct Play
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-copy" value="copy" autocomplete="off"><i class="fa fa-stream"></i> Direct Stream
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-transcode" value="transcode" autocomplete="off"><i class="fa fa-server"></i> Transcode
</label>
</div>
</div> </div>
<div class="btn-group" data-toggle="buttons" id="transcode_decision-selection">
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-direct_play" value="direct play" autocomplete="off"><i class="fa fa-play-circle"></i> Direct Play
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-copy" value="copy" autocomplete="off"><i class="fa fa-stream"></i> Direct Stream
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-transcode" value="transcode" autocomplete="off"><i class="fa fa-server"></i> Transcode
</label>
</div>
<div class="btn-group">
<button class="btn btn-dark refresh-history-button" id="refresh-history-list"><i class="fa fa-refresh"></i> Refresh history</button>
</div>
<div class="btn-group colvis-button-bar"></div>
</div> </div>
</div> </div>
<div class="table-card-back"> <div class="table-card-back">
@ -145,7 +162,7 @@
} }
}); });
function loadHistoryTable(media_type, transcode_decision, selected_user_id) { function loadHistoryTable(media_type, network_type, transcode_decision, selected_user_id) {
history_table_options.ajax = { history_table_options.ajax = {
url: 'get_history', url: 'get_history',
type: 'POST', type: 'POST',
@ -153,6 +170,7 @@
return { return {
json_data: JSON.stringify(d), json_data: JSON.stringify(d),
media_type: media_type, media_type: media_type,
network_type: network_type,
transcode_decision: transcode_decision, transcode_decision: transcode_decision,
user_id: selected_user_id user_id: selected_user_id
}; };
@ -170,16 +188,25 @@
$('#media_type-selection').on('change', function () { $('#media_type-selection').on('change', function () {
$('#media_type-selection > label').removeClass('active'); $('#media_type-selection > label').removeClass('active');
var selected_filter = $('input[name=media_type-filter]:checked', '#media_type-selection'); let selected_filter = $('input[name=media_type-filter]:checked', '#media_type-selection');
$(selected_filter).closest('label').addClass('active'); $(selected_filter).closest('label').addClass('active');
media_type = $(selected_filter).map(function () { return $(this).val(); }).get().join(','); media_type = $(selected_filter).map(function () { return $(this).val(); }).get().join(',');
setLocalStorage('history_media_type', media_type); setLocalStorage('history_media_type', media_type);
history_table.draw(); history_table.draw();
}); });
$('#network_type-selection').on('change', function () {
$('#network_type-selection > label').removeClass('active');
let selected_filter = $('input[name=network_type-filter]:checked', '#network_type-selection');
$(selected_filter).closest('label').addClass('active');
network_type = $(selected_filter).map(function () { return $(this).val(); }).get().join(',');
setLocalStorage('history_network_type', network_type);
history_table.draw();
});
$('#transcode_decision-selection').on('change', function () { $('#transcode_decision-selection').on('change', function () {
$('#transcode_decision-selection > label').removeClass('active'); $('#transcode_decision-selection > label').removeClass('active');
var selected_filter = $('input[name=transcode_decision-filter]:checked', '#transcode_decision-selection'); let selected_filter = $('input[name=transcode_decision-filter]:checked', '#transcode_decision-selection');
$(selected_filter).closest('label').addClass('active'); $(selected_filter).closest('label').addClass('active');
transcode_decision = $(selected_filter).map(function () { return $(this).val(); }).get().join(','); transcode_decision = $(selected_filter).map(function () { return $(this).val(); }).get().join(',');
setLocalStorage('history_transcode_decision', transcode_decision); setLocalStorage('history_transcode_decision', transcode_decision);
@ -192,23 +219,30 @@
}); });
} }
var selected_user_id = "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}"; const selected_user_id = "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}";
var media_type = getLocalStorage('history_media_type', 'all'); const media_type = getLocalStorage('history_media_type', 'all');
$.each(media_type.split(','), function (i, item) { $.each(media_type.split(','), function (i, item) {
var history_media_type = $('#history-media_type-' + item); let history_media_type = $('#history-media_type-' + item);
history_media_type.prop('checked', true); history_media_type.prop('checked', true);
history_media_type.closest('label').addClass('active'); history_media_type.closest('label').addClass('active');
}); });
var transcode_decision = getLocalStorage('history_transcode_decision', 'all'); const network_type = getLocalStorage('history_network_type', '');
$.each(network_type.split(','), function (i, item) {
let history_network_type = $('#history-network_type-' + item);
history_network_type.prop('checked', true);
history_network_type.closest('label').addClass('active');
});
const transcode_decision = getLocalStorage('history_transcode_decision', 'all');
$.each(transcode_decision.split(','), function (i, item) { $.each(transcode_decision.split(','), function (i, item) {
var history_transcode_decision = $('#history-transcode_decision-' + item.replace(' ', '_')); let history_transcode_decision = $('#history-transcode_decision-' + item.replace(' ', '_'));
history_transcode_decision.prop('checked', true); history_transcode_decision.prop('checked', true);
history_transcode_decision.closest('label').addClass('active'); history_transcode_decision.closest('label').addClass('active');
}); });
loadHistoryTable(media_type, transcode_decision, selected_user_id); loadHistoryTable(media_type, network_type, transcode_decision, selected_user_id);
% if _session['user_group'] == 'admin': % if _session['user_group'] == 'admin':
$('#row-edit-mode').on('click', function() { $('#row-edit-mode').on('click', function() {

View file

@ -216,6 +216,17 @@ DOCUMENTATION :: END
</button> </button>
</div> </div>
% endif % endif
<div class="btn-group" data-toggle="buttons" id="network_type-selection">
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="network_type-filter" id="history-network_type-lan" value="lan" autocomplete="off"><i class="fa fa-server"></i> Local Play
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="network_type-filter" id="history-network_type-wan" value="wan" autocomplete="off"><i class="fa fa-globe"></i> Remote Play
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="network_type-filter" id="history-network_type-cellular" value="cellular" autocomplete="off"><i class="fa fa-broadcast-tower"></i> Mobile Play
</label>
</div>
<div class="btn-group" data-toggle="buttons" id="transcode_decision-selection"> <div class="btn-group" data-toggle="buttons" id="transcode_decision-selection">
<label class="btn btn-dark btn-filter"> <label class="btn btn-dark btn-filter">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-direct_play" value="direct play" autocomplete="off"><i class="fa fa-play-circle"></i> Direct Play <input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-direct_play" value="direct play" autocomplete="off"><i class="fa fa-play-circle"></i> Direct Play
@ -567,7 +578,7 @@ DOCUMENTATION :: END
$(".inactive-library-tooltip").tooltip(); $(".inactive-library-tooltip").tooltip();
function loadHistoryTable(transcode_decision) { function loadHistoryTable(network_type, transcode_decision) {
// Build watch history table // Build watch history table
history_table_options.ajax = { history_table_options.ajax = {
url: 'get_history', url: 'get_history',
@ -577,6 +588,7 @@ DOCUMENTATION :: END
json_data: JSON.stringify( d ), json_data: JSON.stringify( d ),
section_id: section_id, section_id: section_id,
user_id: "${history_user_id}", user_id: "${history_user_id}",
network_type: network_type,
transcode_decision: transcode_decision transcode_decision: transcode_decision
}; };
} }
@ -590,24 +602,38 @@ DOCUMENTATION :: END
$('#transcode_decision-selection').on('change', function () { $('#transcode_decision-selection').on('change', function () {
$('#transcode_decision-selection > label').removeClass('active'); $('#transcode_decision-selection > label').removeClass('active');
var selected_filter = $('input[name=transcode_decision-filter]:checked', '#transcode_decision-selection'); let selected_filter = $('input[name=transcode_decision-filter]:checked', '#transcode_decision-selection');
$(selected_filter).closest('label').addClass('active'); $(selected_filter).closest('label').addClass('active');
transcode_decision = $(selected_filter).map(function () { return $(this).val(); }).get().join(','); transcode_decision = $(selected_filter).map(function () { return $(this).val(); }).get().join(',');
setLocalStorage('library_' + section_id + 'history_transcode_decision', transcode_decision); setLocalStorage('library_' + section_id + 'history_transcode_decision', transcode_decision);
history_table.draw(); history_table.draw();
}); });
$('#network_type-selection').on('change', function () {
$('#network_type-selection > label').removeClass('active');
let selected_filter = $('input[name=network_type-filter]:checked', '#network_type-selection');
$(selected_filter).closest('label').addClass('active');
network_type = $(selected_filter).map(function () { return $(this).val(); }).get().join(',');
setLocalStorage('library_' + section_id + 'history_network_type', network_type);
history_table.draw();
});
} }
$('#nav-tabs-history').on('shown.bs.tab', function() { $('#nav-tabs-history').on('shown.bs.tab', function() {
if (typeof(history_table) === 'undefined') { if (typeof(history_table) === 'undefined') {
var transcode_decision = getLocalStorage('library_' + section_id + 'history_transcode_decision', 'all'); const transcode_decision = getLocalStorage('library_' + section_id + 'history_transcode_decision', 'all');
$.each(transcode_decision.split(','), function (i, item) { $.each(transcode_decision.split(','), function (i, item) {
var history_transcode_decision = $('#history-transcode_decision-' + item.replace(' ', '_')); let history_transcode_decision = $('#history-transcode_decision-' + item.replace(' ', '_'));
history_transcode_decision.prop('checked', true); history_transcode_decision.prop('checked', true);
history_transcode_decision.closest('label').addClass('active'); history_transcode_decision.closest('label').addClass('active');
}); });
const network_type = getLocalStorage('library_' + section_id + 'history_network_type', '');
loadHistoryTable(transcode_decision); $.each(network_type.split(','), function (i, item) {
let history_network_type = $('#history-network_type-' + item);
history_network_type.prop('checked', true);
history_network_type.closest('label').addClass('active');
});
loadHistoryTable(network_type, transcode_decision);
} }
}); });

View file

@ -151,50 +151,67 @@ DOCUMENTATION :: END
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<div class='table-card-header'> <div class='table-card-header'>
<div class="header-bar"> <div class="header-bar" style="margin-top: 2.4rem;">
<span> <span>
<i class="fa fa-history"></i> History for <strong> <i class="fa fa-history"></i> History for <strong>
<span class="set-username">${data['friendly_name']}</span> <span class="set-username">${data['friendly_name']}</span>
</strong> </strong>
</span> </span>
</div> </div>
<div class="button-bar"> <div id="history-option-container" class="container">
% if _session['user_group'] == 'admin': <div class="button-bar history-option-bar" style="float: left;">
<div class="btn-group"> % if _session['user_group'] == 'admin':
<button class="btn btn-danger btn-edit" data-toggle="button" aria-pressed="false" autocomplete="off" id="row-edit-mode"> <div class="btn-group">
<i class="fa fa-trash-o"></i> Delete mode <button class="btn btn-danger btn-edit" data-toggle="button" aria-pressed="false" autocomplete="off" id="row-edit-mode">
</button> <i class="fa fa-trash-o"></i> Delete mode
</button>
</div>
% endif
</div> </div>
% endif <div class="button-bar history-option-bar">
<div class="btn-group" data-toggle="buttons" id="media_type-selection"> <div class="btn-group">
<label class="btn btn-dark btn-filter"> <button class="btn btn-dark refresh-history-button" id="refresh-history-list"><i class="fa fa-refresh"></i> Refresh history</button>
<input type="checkbox" name="media_type-filter" id="history-media_type-movie" value="movie" autocomplete="off"><i class="fa fa-film"></i> Movies </div>
</label> <div class="btn-group colvis-button-bar"></div>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="media_type-filter" id="history-media_type-episode" value="episode" autocomplete="off"><i class="fa fa-television"></i> TV Shows
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="media_type-filter" id="history-media_type-track" value="track" autocomplete="off"><i class="fa fa-music"></i> Music
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="media_type-filter" id="history-media_type-live" value="live" autocomplete="off"><i class="fa fa-broadcast-tower"></i> Live TV
</label>
</div> </div>
<div class="btn-group" data-toggle="buttons" id="transcode_decision-selection"> <div class="button-bar history-option-bar">
<label class="btn btn-dark btn-filter"> <div class="btn-group-justified history-option-button-group" data-toggle="buttons" id="media_type-selection" style="padding-right: 0.5rem;">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-direct_play" value="direct play" autocomplete="off"><i class="fa fa-play-circle"></i> Direct Play <label class="btn btn-dark btn-filter">
</label> <input type="checkbox" name="media_type-filter" id="history-media_type-movie" value="movie" autocomplete="off"><i class="fa fa-film"></i> Movies
<label class="btn btn-dark btn-filter"> </label>
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-direct_stream" value="copy" autocomplete="off"><i class="fa fa-stream"></i> Direct Stream <label class="btn btn-dark btn-filter">
</label> <input type="checkbox" name="media_type-filter" id="history-media_type-episode" value="episode" autocomplete="off"><i class="fa fa-television"></i> TV Shows
<label class="btn btn-dark btn-filter"> </label>
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-transcode" value="transcode" autocomplete="off"><i class="fa fa-server"></i> Transcode <label class="btn btn-dark btn-filter">
</label> <input type="checkbox" name="media_type-filter" id="history-media_type-track" value="track" autocomplete="off"><i class="fa fa-music"></i> Music
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="media_type-filter" id="history-media_type-live" value="live" autocomplete="off"><i class="fa fa-broadcast-tower"></i> Live TV
</label>
</div>
<div class="btn-group-justified history-option-button-group" data-toggle="buttons" id="network_type-selection" style="padding-right: 0.5rem;">
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="network_type-filter" id="history-network_type-lan" value="lan" autocomplete="off"><i class="fa fa-server"></i> Local Play
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="network_type-filter" id="history-network_type-wan" value="wan" autocomplete="off"><i class="fa fa-globe"></i> Remote Play
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="network_type-filter" id="history-network_type-cellular" value="cellular" autocomplete="off"><i class="fa fa-broadcast-tower"></i> Mobile Play
</label>
</div>
<div class="btn-group-justified history-option-button-group" data-toggle="buttons" id="transcode_decision-selection">
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-direct_play" value="direct play" autocomplete="off"><i class="fa fa-play-circle"></i> Direct Play
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-copy" value="copy" autocomplete="off"><i class="fa fa-stream"></i> Direct Stream
</label>
<label class="btn btn-dark btn-filter">
<input type="checkbox" name="transcode_decision-filter" id="history-transcode_decision-transcode" value="transcode" autocomplete="off"><i class="fa fa-server"></i> Transcode
</label>
</div>
</div> </div>
<div class="btn-group">
<button class="btn btn-dark refresh-history-button" id="refresh-history-list"><i class="fa fa-refresh"></i> Refresh history</button>
</div>
<div class="btn-group colvis-button-bar" id="button-bar-history"></div>
</div> </div>
</div> </div>
<div class="table-card-back"> <div class="table-card-back">
@ -532,7 +549,7 @@ DOCUMENTATION :: END
$(".inactive-user-tooltip").tooltip(); $(".inactive-user-tooltip").tooltip();
function loadHistoryTable(media_type, transcode_decision) { function loadHistoryTable(media_type, network_type, transcode_decision) {
// Build watch history table // Build watch history table
history_table_options.ajax = { history_table_options.ajax = {
url: 'get_history', url: 'get_history',
@ -542,6 +559,7 @@ DOCUMENTATION :: END
json_data: JSON.stringify( d ), json_data: JSON.stringify( d ),
user_id: user_id, user_id: user_id,
media_type: media_type, media_type: media_type,
network_type: network_type,
transcode_decision: transcode_decision transcode_decision: transcode_decision
}; };
} }
@ -556,16 +574,25 @@ DOCUMENTATION :: END
$('#media_type-selection').on('change', function () { $('#media_type-selection').on('change', function () {
$('#media_type-selection > label').removeClass('active'); $('#media_type-selection > label').removeClass('active');
var selected_filter = $('input[name=media_type-filter]:checked', '#media_type-selection'); let selected_filter = $('input[name=media_type-filter]:checked', '#media_type-selection');
$(selected_filter).closest('label').addClass('active'); $(selected_filter).closest('label').addClass('active');
media_type = $(selected_filter).map(function () { return $(this).val(); }).get().join(','); media_type = $(selected_filter).map(function () { return $(this).val(); }).get().join(',');
setLocalStorage('user_' + user_id + '-history_media_type', media_type); setLocalStorage('user_' + user_id + '-history_media_type', media_type);
history_table.draw(); history_table.draw();
}); });
$('#network_type-selection').on('change', function () {
$('#network_type-selection > label').removeClass('active');
let selected_filter = $('input[name=network_type-filter]:checked', '#network_type-selection');
$(selected_filter).closest('label').addClass('active');
network_type = $(selected_filter).map(function () { return $(this).val(); }).get().join(',');
setLocalStorage('user_' + user_id + 'history_network_type', network_type);
history_table.draw();
});
$('#transcode_decision-selection').on('change', function () { $('#transcode_decision-selection').on('change', function () {
$('#transcode_decision-selection > label').removeClass('active'); $('#transcode_decision-selection > label').removeClass('active');
var selected_filter = $('input[name=transcode_decision-filter]:checked', '#transcode_decision-selection'); let selected_filter = $('input[name=transcode_decision-filter]:checked', '#transcode_decision-selection');
$(selected_filter).closest('label').addClass('active'); $(selected_filter).closest('label').addClass('active');
transcode_decision = $(selected_filter).map(function () { return $(this).val(); }).get().join(','); transcode_decision = $(selected_filter).map(function () { return $(this).val(); }).get().join(',');
setLocalStorage('user_' + user_id + 'history_transcode_decision', transcode_decision); setLocalStorage('user_' + user_id + 'history_transcode_decision', transcode_decision);
@ -575,21 +602,28 @@ DOCUMENTATION :: END
$('#nav-tabs-history').on('shown.bs.tab', function() { $('#nav-tabs-history').on('shown.bs.tab', function() {
if (typeof(history_table) === 'undefined') { if (typeof(history_table) === 'undefined') {
var media_type = getLocalStorage('user_' + user_id + '-history_media_type', 'all'); const media_type = getLocalStorage('user_' + user_id + '-history_media_type', 'all');
$.each(media_type.split(','), function (i, item) { $.each(media_type.split(','), function (i, item) {
var history_media_type = $('#history-media_type-' + item); let history_media_type = $('#history-media_type-' + item);
history_media_type.prop('checked', true); history_media_type.prop('checked', true);
history_media_type.closest('label').addClass('active'); history_media_type.closest('label').addClass('active');
}); });
var transcode_decision = getLocalStorage('user_' + user_id + 'history_transcode_decision', 'all'); const network_type = getLocalStorage('user_' + user_id + 'history_network_type', '');
$.each(network_type.split(','), function (i, item) {
let history_network_type = $('#history-network_type-' + item);
history_network_type.prop('checked', true);
history_network_type.closest('label').addClass('active');
});
const transcode_decision = getLocalStorage('user_' + user_id + 'history_transcode_decision', 'all');
$.each(transcode_decision.split(','), function (i, item) { $.each(transcode_decision.split(','), function (i, item) {
var history_transcode_decision = $('#history-transcode_decision-' + item.replace(' ', '_')); let history_transcode_decision = $('#history-transcode_decision-' + item.replace(' ', '_'));
history_transcode_decision.prop('checked', true); history_transcode_decision.prop('checked', true);
history_transcode_decision.closest('label').addClass('active'); history_transcode_decision.closest('label').addClass('active');
}); });
loadHistoryTable(media_type, transcode_decision); loadHistoryTable(media_type, network_type, transcode_decision);
} }
}); });

View file

@ -1898,6 +1898,7 @@ class WebInterface(object):
after (str): History after and including the date, "YYYY-MM-DD" after (str): History after and including the date, "YYYY-MM-DD"
section_id (int): 2 section_id (int): 2
media_type (str): "movie", "episode", "track", "live" media_type (str): "movie", "episode", "track", "live"
network_type (str): "lan", "wan", "cellular"
transcode_decision (str): "direct play", "copy", "transcode", transcode_decision (str): "direct play", "copy", "transcode",
guid (str): Plex guid for an item, e.g. "com.plexapp.agents.thetvdb://121361/6/1" guid (str): Plex guid for an item, e.g. "com.plexapp.agents.thetvdb://121361/6/1"
order_column (str): "date", "friendly_name", "ip_address", "platform", "player", order_column (str): "date", "friendly_name", "ip_address", "platform", "player",
@ -2029,6 +2030,10 @@ class WebInterface(object):
media_type = helpers.split_strip(kwargs.get('media_type', '')) media_type = helpers.split_strip(kwargs.get('media_type', ''))
if media_type and 'all' not in media_type: if media_type and 'all' not in media_type:
custom_where.append(['media_type_live', media_type]) custom_where.append(['media_type_live', media_type])
if 'network_type' in kwargs:
network_type = helpers.split_strip(kwargs.get('network_type', ''))
if network_type:
custom_where.append(['location', network_type])
if 'transcode_decision' in kwargs: if 'transcode_decision' in kwargs:
transcode_decision = helpers.split_strip(kwargs.get('transcode_decision', '')) transcode_decision = helpers.split_strip(kwargs.get('transcode_decision', ''))
if transcode_decision and 'all' not in transcode_decision: if transcode_decision and 'all' not in transcode_decision: