mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-08-22 14:13:40 -07:00
Merge 08dc6a1391
into ae3d75bbe3
This commit is contained in:
commit
a79793fe55
5 changed files with 215 additions and 104 deletions
|
@ -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,
|
||||||
|
|
|
@ -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> </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> </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>────────────</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>────────────</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() {
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue