2021-03-08 18:45:06 +00:00
function topFunction ( ) {
document . body . scrollTop = 0 ; // For Safari
document . documentElement . scrollTop = 0 ; // For Chrome, Firefox, IE and Opera
}
function login _menu ( ) {
topFunction ( ) ;
2022-01-11 13:33:30 +00:00
var html = '<h2>Admin Login</h2>' ;
html += '<form id="password_login_form" onsubmit="log_in();return false">'
2021-03-08 18:45:06 +00:00
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="username" title="The username chosen during first-time setup.">Username:</label>' ;
html += '<input type="text" class="form-control" id="username" value="" placeholder="" minlength=4 autocomplete="on" required />' ;
2021-10-04 12:26:50 +00:00
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="password" title="The password chosen during first-time setup.">Password:</label>' ;
2021-03-08 18:45:06 +00:00
html += '<input type="password" class="form-control" id="password" value="" autocomplete="off" required />' ;
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
html += '<div id="password_login_form_error"></div>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button type="submit" class="form-control btn" id="log_in_button"><img src="../assets/done.svg" class="btn_logo"><p2>Log in</p2></button>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
html += '</form>' ;
document . getElementById ( "setup" ) . innerHTML = html ;
}
2022-01-11 13:33:30 +00:00
function log _in ( ) {
// Disable button
document . getElementById ( "log_in_button" ) . disabled = true ;
document . getElementById ( "log_in_button" ) . style . opacity = '0.5' ;
// Get variables
password = document . getElementById ( 'password' ) . value ;
username = document . getElementById ( 'username' ) . value ;
admin _login _form = { "password" : password , "username" : username } ;
var admin _login _data = JSON . stringify ( admin _login _form ) ;
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
console . log ( 'Failed to parse API response. Response: ' + this . responseText )
document . getElementById ( "log_in_button" ) . disabled = false ;
document . getElementById ( "log_in_button" ) . style . opacity = '1' ;
document . getElementById ( 'password' ) . value = '' ;
}
if ( result . error ) {
document . getElementById ( "password_login_form_error" ) . innerHTML = result . message ;
document . getElementById ( "log_in_button" ) . disabled = false ;
document . getElementById ( "log_in_button" ) . style . opacity = '1' ;
document . getElementById ( 'password' ) . value = '' ;
} else {
2022-01-16 12:29:20 +00:00
set _cookie ( "wrapperr-admin" , result . cookie , 7 ) ;
2022-01-11 13:33:30 +00:00
location . reload ( ) ;
}
}
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , "../api/get_login_admin_cookie.php" ) ;
xhttp . send ( admin _login _data ) ;
return ;
}
function set _password _form ( ) {
2021-03-08 18:45:06 +00:00
topFunction ( ) ;
2022-01-11 13:33:30 +00:00
var html = '<h2>Create admin</h2>' ;
html += '<form id="password_form" onsubmit="set_password();return false;">'
2021-03-08 18:45:06 +00:00
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="username" title="The username needed to log in as administrator and change the config-file remotely.">Set an admin username:</label>' ;
html += '<input type="text" class="form-control" id="username" value="' + username + '" placeholder="" minlength=4 autocomplete="on" required />' ;
2021-10-04 12:26:50 +00:00
html += '</div>' ;
2021-03-08 18:45:06 +00:00
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="password" title="The password needed to change the config-file remotely.">Set an admin password:</label>' ;
html += '<input type="password" class="form-control" id="password" value="' + password + '" placeholder="" autocomplete="off" required />' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="password_2" title="The password needed to change the config-file remotely.">Repeat the password:</label>' ;
html += '<input type="password" class="form-control" id="password_2" value="' + password + '" placeholder="" autocomplete="off" required />' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
html += '<div id="password_form_error"></div>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button type="submit" class="form-control btn" id="create_admin_button"><img src="../assets/done.svg" class="btn_logo"><p2>Create account</p2></button>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
html += '</form>' ;
document . getElementById ( "setup" ) . innerHTML = html ;
}
2022-01-11 13:33:30 +00:00
function set _password ( ) {
// Disable button
document . getElementById ( "create_admin_button" ) . disabled = true ;
document . getElementById ( "create_admin_button" ) . style . opacity = '0.5' ;
// Check password match
if ( document . getElementById ( 'password' ) . value != document . getElementById ( 'password_2' ) . value ) {
alert ( "The passwords must match." ) ;
document . getElementById ( 'password' ) . value = "" ;
document . getElementById ( 'password_2' ) . value = "" ;
document . getElementById ( 'password' ) . focus ( ) ;
document . getElementById ( "create_admin_button" ) . disabled = false ;
document . getElementById ( "create_admin_button" ) . style . opacity = '1' ;
return false ;
} else {
password = document . getElementById ( 'password' ) . value ;
username = document . getElementById ( 'username' ) . value ;
}
2021-03-13 22:55:08 +00:00
2022-01-11 13:33:30 +00:00
admin _create _form = { "password" : password , "username" : username } ;
var admin _create _data = JSON . stringify ( admin _create _form ) ;
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
console . log ( 'Failed to parse API response. Response: ' + this . responseText )
document . getElementById ( "create_admin_button" ) . disabled = false ;
document . getElementById ( "create_admin_button" ) . style . opacity = '1' ;
}
if ( result . error ) {
document . getElementById ( "password_form_error" ) . innerHTML = result . message ;
document . getElementById ( "create_admin_button" ) . disabled = false ;
document . getElementById ( "create_admin_button" ) . style . opacity = '1' ;
} else {
location . reload ( ) ;
}
}
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , "../api/create_admin.php" ) ;
xhttp . send ( admin _create _data ) ;
return ;
}
function update _password _form ( ) {
2021-03-08 18:45:06 +00:00
topFunction ( ) ;
2022-01-11 13:33:30 +00:00
var html = '<div class="form-group newline">' ;
html += '<button class="form-control btn" name="admin_menu_return_button" id="admin_menu_return_button" onclick="get_config(get_cookie(\'wrapperr-admin\'));"><img src="../assets/trash.svg" class="btn_logo"></img><p2 id="admin_menu_return_button_text">Return</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<hr>' ;
html += '</div>' ;
html += '<form id="update_password_form" onsubmit="return false;">'
html += '<div class="form-group newline">' ;
html += '<label for="username" title="The username needed to log in as administrator and change the config-file remotely.">Update admin username:</label>' ;
html += '<input type="text" class="form-control" id="username" value="' + username + '" placeholder="" minlength=4 autocomplete="on" required />' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="password" title="The password needed to change the config-file remotely.">Update admin password:</label>' ;
html += '<input type="password" class="form-control" id="password" value="" placeholder="" autocomplete="off" required />' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="password_2" title="The password needed to change the config-file remotely.">Repeat the password:</label>' ;
html += '<input type="password" class="form-control" id="password_2" value="" placeholder="" autocomplete="off" required />' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<div id="password_form_error"></div>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button type="submit" class="form-control btn" onclick="update_password();" id="update_admin_button"><img src="../assets/done.svg" class="btn_logo"><p2>Update account</p2></button>' ;
html += '</div>' ;
html += '</form>' ;
document . getElementById ( "setup" ) . innerHTML = html ;
}
function update _password ( ) {
// Disable button
document . getElementById ( "update_admin_button" ) . disabled = true ;
document . getElementById ( "update_admin_button" ) . style . opacity = '0.5' ;
// Check password match
if ( document . getElementById ( 'password' ) . value != document . getElementById ( 'password_2' ) . value ) {
alert ( "The passwords must match." ) ;
document . getElementById ( 'password' ) . value = "" ;
document . getElementById ( 'password_2' ) . value = "" ;
document . getElementById ( 'password' ) . focus ( ) ;
document . getElementById ( "update_admin_button" ) . disabled = false ;
document . getElementById ( "update_admin_button" ) . style . opacity = '1' ;
return false ;
} else {
password = document . getElementById ( 'password' ) . value ;
username = document . getElementById ( 'username' ) . value ;
2021-03-08 18:45:06 +00:00
}
2022-01-11 13:33:30 +00:00
admin _create _form = { "cookie" : get _cookie ( "wrapperr-admin" ) , "password" : password , "username" : username } ;
var admin _create _data = JSON . stringify ( admin _create _form ) ;
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
document . getElementById ( "password_form_error" ) . innerHTML = 'Failed to parse API response.' ;
console . log ( 'Failed to parse API response. Response: ' + this . responseText )
document . getElementById ( "update_admin_button" ) . disabled = false ;
document . getElementById ( "update_admin_button" ) . style . opacity = '1' ;
}
if ( result . error ) {
document . getElementById ( "password_form_error" ) . innerHTML = result . message ;
document . getElementById ( "update_admin_button" ) . disabled = false ;
document . getElementById ( "update_admin_button" ) . style . opacity = '1' ;
} else {
set _cookie ( "wrapperr-admin" , "" , 1 ) ;
location . reload ( ) ;
}
}
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , "../api/set_admin.php" ) ;
xhttp . send ( admin _create _data ) ;
return ;
}
function get _admin _state ( ) {
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
console . log ( 'Failed to parse API response. Response: ' + this . responseText )
}
if ( result . error ) {
console . log ( result . message ) ;
} else if ( ! result . configured ) {
first _time = true ;
set _password _form ( ) ;
} else {
login _menu ( ) ;
}
}
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , "../api/get_admin_state.php" ) ;
xhttp . send ( ) ;
return ;
}
function sign _out ( ) {
set _cookie ( "wrapperr-admin" , "" , 1 ) ;
location . reload ( ) ;
}
function admin _menu ( ) {
2021-03-08 18:45:06 +00:00
var html = '<div class="form-group">' ;
2022-01-11 13:33:30 +00:00
html += '<button class="form-control btn" onclick="update_password_form()"><img src="../assets/config.svg" class="btn_logo"><p2>Admin settings</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<button class="form-control btn" name="plex_signout_button" id="plex_signout_button" onclick="sign_out()"><img src="../assets/close.svg" class="btn_logo"></img><p2 id="plex_signout_button_text">Sign Out</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<hr>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button class="form-control btn" onclick="set_tautulli_settings()" id="set_tautulli_settings"><img src="../assets/config.svg" class="btn_logo"><p2>Tautulli settings</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button class="form-control btn" onclick="set_wrapperr_settings()" id="set_wrapperr_settings"><img src="../assets/config.svg" class="btn_logo"><p2>Wrapperr settings</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button class="form-control btn" onclick="set_wrapperr_customization()" id="set_wrapperr_customization"><img src="../assets/config.svg" class="btn_logo"><p2>Wrapperr customization</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button class="form-control btn" onclick="caching_menu()" id="caching_menu"><img src="../assets/download.svg" class="btn_logo"><p2>Caching</p2></button>' ;
html += '</div>' ;
document . getElementById ( "setup" ) . innerHTML = html ;
if ( timezone === '' ) {
document . getElementById ( "set_wrapperr_settings" ) . style . border = '0.15em dashed var(--red)' ;
document . getElementById ( "caching_menu" ) . disabled = true ;
document . getElementById ( "caching_menu" ) . style . opacity = '0.5' ;
}
if ( wrapped _start === '' || wrapped _end === '' ) {
document . getElementById ( "set_wrapperr_customization" ) . style . border = '0.15em dashed var(--red)' ;
document . getElementById ( "caching_menu" ) . disabled = true ;
document . getElementById ( "caching_menu" ) . style . opacity = '0.5' ;
}
if ( tautulli _ip === '' || tautulli _apikey === '' || tautulli _length === '' ) {
document . getElementById ( "set_tautulli_settings" ) . style . border = '0.15em dashed var(--red)' ;
document . getElementById ( "caching_menu" ) . disabled = true ;
document . getElementById ( "caching_menu" ) . style . opacity = '0.5' ;
}
}
function set _tautulli _settings ( ) {
topFunction ( ) ;
var html = '<div class="form-group newline">' ;
html += '<button class="form-control btn" name="admin_menu_return_button" id="admin_menu_return_button" onclick="get_config(get_cookie(\'wrapperr-admin\'));"><img src="../assets/trash.svg" class="btn_logo"></img><p2 id="admin_menu_return_button_text">Return</p2></button>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
2021-12-12 16:31:15 +00:00
html += '<hr>' ;
2022-01-11 13:33:30 +00:00
html += '</div>' ;
2021-12-12 16:31:15 +00:00
2022-01-11 13:33:30 +00:00
html += '<form id="set_tautulli_form" onsubmit="return false;">'
2021-03-08 18:45:06 +00:00
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="tautulli_apikey" title="The API key is needed for Plex-Wrapped to interact with Tautulli. Commonly found at Tautulli->Settings->Web Interface->API Key.">Tautulli API key:</label>' ;
html += '<input type="text" class="form-control" id="tautulli_apikey" value="' + tautulli _apikey + '" autocomplete="off" required placeholder="" /><br>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="tautulli_ip" title="The IP address or domain that connects to Tautulli. No subfolders, as this is another setting, but subdomains can be defined.">IP or domain for Tautulli connection:</label>' ;
html += '<input type="text" class="form-control" id="tautulli_ip" value="' + tautulli _ip + '" required placeholder="" /><br>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="tautulli_port" title="The port Tautulli uses for connections. Typically empty if a domain is used.">Port for Tautulli: (Optional)</label>' ;
html += '<input type="text" class="form-control" id="tautulli_port" value="' + tautulli _port + '" placeholder="" /><br>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="tautulli_length" title="The max amount of entries Tautulli responds with during API calls. Typically doesn\'t need to be changed, but if you have more than 5000 entries in a day, they won\'t be loaded.">Tautlli item length:</label>' ;
html += '<input type="number" min="0" class="form-control" id="tautulli_length" value="' + tautulli _length + '" autocomplete="off" placeholder="" required /><br>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
html += '<div class="form-group">' ;
2022-01-11 13:33:30 +00:00
html += '<label for="tautulli_root" title="Subfolder for Tautulli, no slashes needed at the beginning or end. It is the folder accessed after the main IP/domain. For example: \'tautulli.com/subfolder\' would mean you enter \'subfolder\' here.">Tautulli URL Base: (Optional)</label>' ;
2021-12-12 16:31:15 +00:00
html += '<input type="text" class="form-control" id="tautulli_root" value="' + tautulli _root + '" autocomplete="off" placeholder=""/><br>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
2021-10-04 20:21:43 +00:00
html += '<div class="form-group">' ;
2022-01-16 12:29:20 +00:00
html += '<label for="tautulli_libraries" title="Comma seprated list of ID\'s to use for statistics. If none are given, it will search all.">Library ID\'s to use: (Optional)</label>' ;
2021-12-12 16:31:15 +00:00
html += '<input type="text" class="form-control" id="tautulli_libraries" value="' + tautulli _libraries + '" autocomplete="off" placeholder=""/><br>' ;
2021-10-04 20:21:43 +00:00
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
html += '<label for="https" title="Enable if your connection uses HTTPS.">Use HTTPS:</label>' ;
html += '<input type="checkbox" class="form-control" id="https" ' ;
if ( https ) {
html += 'checked="' + https + '" ' ;
}
html += '/><br>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button style="background-color: lightgrey;" type="button" class="form-control btn" id="test_connection" onclick="test_tautulli_connection()"><img src="../assets/synchronize.svg" class="btn_logo"><p2 id="test_tautulli_text">Test Tautulli connection</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button type="submit" class="form-control btn" onclick="set_tautulli_settings_call();" id="set_tautulli_form_button"><img src="../assets/done.svg" class="btn_logo"></img><p2 id="set_tautulli_form_button_text">Save</p2></button>' ;
html += '</div>' ;
html += '</form>' ;
document . getElementById ( "setup" ) . innerHTML = html ;
}
function set _tautulli _settings _call ( ) {
document . getElementById ( "set_tautulli_form_button" ) . disabled = true ;
document . getElementById ( "set_tautulli_form_button" ) . style . opacity = '0.5' ;
tautulli _apikey = document . getElementById ( 'tautulli_apikey' ) . value ;
tautulli _ip = document . getElementById ( 'tautulli_ip' ) . value ;
tautulli _port = document . getElementById ( 'tautulli_port' ) . value ;
tautulli _length = document . getElementById ( 'tautulli_length' ) . value ;
tautulli _root = document . getElementById ( 'tautulli_root' ) . value ;
tautulli _libraries = document . getElementById ( 'tautulli_libraries' ) . value ;
https = document . getElementById ( 'https' ) . checked ;
if ( tautulli _apikey === '' ) {
document . getElementById ( "set_tautulli_form_button" ) . disabled = false ;
document . getElementById ( "set_tautulli_form_button" ) . style . opacity = '1' ;
alert ( 'API key is required for Tautulli to function.' ) ;
document . getElementById ( 'tautulli_apikey' ) . focus ( ) ;
return ;
}
if ( tautulli _ip === '' ) {
document . getElementById ( "set_tautulli_form_button" ) . disabled = false ;
document . getElementById ( "set_tautulli_form_button" ) . style . opacity = '1' ;
alert ( 'Tautulli IP is required for Tautulli to function.' ) ;
document . getElementById ( 'tautulli_ip' ) . focus ( ) ;
return ;
}
if ( tautulli _length === '' ) {
document . getElementById ( "set_tautulli_form_button" ) . disabled = false ;
document . getElementById ( "set_tautulli_form_button" ) . style . opacity = '1' ;
alert ( 'Tautulli item length is required for Tautulli to function.' ) ;
document . getElementById ( 'tautulli_length' ) . focus ( ) ;
return ;
}
tautulli _settings _form = {
"cookie" : cookie ,
"clear_cache" : false ,
"data_type" : "tautulli_settings" ,
"data" : {
"tautulli_apikey" : tautulli _apikey ,
"tautulli_ip" : tautulli _ip ,
"tautulli_port" : tautulli _port ,
"tautulli_length" : tautulli _length ,
"tautulli_root" : tautulli _root ,
"tautulli_libraries" : tautulli _libraries ,
"https" : https
}
} ;
var tautulli _settings _data = JSON . stringify ( tautulli _settings _form ) ;
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
alert ( 'Failed to parse API response.' ) ;
console . log ( 'Failed to parse API response. Response: ' + this . responseText )
document . getElementById ( "set_tautulli_form_button" ) . disabled = false ;
document . getElementById ( "set_tautulli_form_button" ) . style . opacity = '1' ;
}
if ( result . error ) {
alert ( result . message ) ;
document . getElementById ( "set_tautulli_form_button" ) . disabled = false ;
document . getElementById ( "set_tautulli_form_button" ) . style . opacity = '1' ;
} else {
get _config ( get _cookie ( 'wrapperr-admin' ) ) ;
}
}
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , "../api/set_config.php" ) ;
xhttp . send ( tautulli _settings _data ) ;
return ;
}
function set _wrapperr _settings ( ) {
topFunction ( ) ;
var html = '<div class="form-group newline">' ;
html += '<button class="form-control btn" name="admin_menu_return_button" id="admin_menu_return_button" onclick="get_config(get_cookie(\'wrapperr-admin\'));"><img src="../assets/trash.svg" class="btn_logo"></img><p2 id="admin_menu_return_button_text">Return</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<hr>' ;
html += '</div>' ;
html += '<form id="wrapperr_settings_form" onsubmit="return false;">'
2021-03-08 18:45:06 +00:00
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="timezone" title="The timezone the data is located in, like \'Europe/Oslo\'. Type it exactly as it is specified in the PHP documentation.">Timezone: <a href="https://www.php.net/manual/en/timezones.php" target="_blank">(List)</a></label>' ;
html += '<input type="text" class="form-control" id="timezone" value="' + timezone + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
2022-01-11 13:33:30 +00:00
html += '<label for="application_name_str" title="Title of application shown on the pages. Replaces Wrapperr.">Application Name: (Optional)</label>' ;
html += '<input type="text" class="form-control" id="application_name_str" value="' + application _name _str + '" autocomplete="off" placeholder=""/><br>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
2021-03-12 22:45:44 +00:00
html += '<div class="form-group">' ;
2022-01-11 13:33:30 +00:00
html += '<label for="application_url_str" title="The domain/URL for Wrapperr. For example \'https://wrapperr-is-cool.example\'.">Wrapperr URL: (Optional)</label>' ;
html += '<input type="text" class="form-control" id="application_url_str" value="' + application _url _str + '" autocomplete="off" placeholder=""/><br>' ;
2021-03-12 22:45:44 +00:00
html += '</div>' ;
2021-03-08 18:45:06 +00:00
html += '<div class="form-group">' ;
2022-01-11 13:33:30 +00:00
html += '<label for="wrapperr_root" title="Subfolder for Wrapperr, no slashes needed at the beginning or end. It is the folder accessed after the main IP/domain. For example: \'mycooldomain.com/wrapperr\' would mean you enter \'wrapperr\' here.">Wrapperr URL Base: (Optional)</label>' ;
html += '<input type="text" class="form-control" id="wrapperr_root" value="' + wrapperr _root + '" autocomplete="off" placeholder=""/><br>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="create_share_links" title="Grants users the ability to create a URL for sharing. Valid for 7 days.">Allow shareable URL creation:<br>' ;
html += '<input type="checkbox" class="form-control" id="create_share_links" ' ;
if ( create _share _links ) {
html += 'checked="' + create _share _links + '" ' ;
}
html += '/><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="use_logs" title="Logs every API request into a log-file in the config folder. ID for Wrapped request included.">Log API calls:<br>' ;
html += '<input type="checkbox" class="form-control" id="use_logs" ' ;
if ( use _logs ) {
html += 'checked="' + use _logs + '" ' ;
}
html += '/><br>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<div class="warning">!<br>If your wrapped period is long and no results are pre-cached, the wait time can be extensive, which leads to PHP/parsing errors. Using this cache feature and caching once is recommended, after setup.</div>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<label for="use_cache" title="Caches your results in cache.json for later use.">Cache results for later use:<br>' ;
html += '<input type="checkbox" class="form-control" id="use_cache" ' ;
if ( use _cache ) {
html += 'checked="' + use _cache + '" ' ;
}
html += '/><br>' ;
html += '</div>' ;
html += '<div class="form-group newline" title="Clear the cache now to include the newest settings.">' ;
html += '<label for="clear_cache">Clear cache now:<br>' ;
html += '<input type="checkbox" class="form-control" id="clear_cache" checked /></label>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button type="submit" class="form-control btn" onclick="set_wrapperr_settings_call();" id="set_wrapperr_settings_form_button"><img src="../assets/done.svg" class="btn_logo"></img><p2 id="set_wrapperr_settings_form_button_text">Save</p2></button>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
html += '</form>' ;
document . getElementById ( "setup" ) . innerHTML = html ;
}
2022-01-11 13:33:30 +00:00
function set _wrapperr _settings _call ( ) {
document . getElementById ( "set_wrapperr_settings_form_button" ) . disabled = true ;
document . getElementById ( "set_wrapperr_settings_form_button" ) . style . opacity = '0.5' ;
use _cache = document . getElementById ( 'use_cache' ) . checked ;
use _logs = document . getElementById ( 'use_logs' ) . checked ;
wrapperr _root = document . getElementById ( 'wrapperr_root' ) . value ;
application _name _str = document . getElementById ( 'application_name_str' ) . value ;
application _url _str = document . getElementById ( 'application_url_str' ) . value ;
create _share _links = document . getElementById ( 'create_share_links' ) . checked ;
timezone = document . getElementById ( 'timezone' ) . value ;
clear _cache = document . getElementById ( 'clear_cache' ) . checked ;
if ( timezone === '' ) {
document . getElementById ( "set_wrapperr_settings_form_button" ) . disabled = false ;
document . getElementById ( "set_wrapperr_settings_form_button" ) . style . opacity = '1' ;
alert ( 'Timezone is required for Wrapperr to function.' ) ;
document . getElementById ( 'timezone' ) . focus ( ) ;
return ;
2021-03-08 18:45:06 +00:00
}
2022-01-11 13:33:30 +00:00
wrapperr _settings _form = {
"cookie" : cookie ,
"clear_cache" : clear _cache ,
"data_type" : "wrapperr_settings" ,
"data" : {
"use_cache" : use _cache ,
"use_logs" : use _logs ,
"wrapperr_root" : wrapperr _root ,
"create_share_links" : create _share _links ,
"timezone" : timezone ,
"application_name" : application _name _str ,
"application_url" : application _url _str
}
} ;
var wrapperr _settings _data = JSON . stringify ( wrapperr _settings _form ) ;
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
2021-03-08 18:45:06 +00:00
2022-01-11 13:33:30 +00:00
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
alert ( 'Failed to parse API response.' ) ;
console . log ( 'Failed to parse API response. Response: ' + this . responseText ) ;
document . getElementById ( "set_wrapperr_settings_form_button" ) . disabled = false ;
document . getElementById ( "set_wrapperr_settings_form_button" ) . style . opacity = '1' ;
}
if ( result . error ) {
alert ( result . message ) ;
document . getElementById ( "set_wrapperr_settings_form_button" ) . disabled = false ;
document . getElementById ( "set_wrapperr_settings_form_button" ) . style . opacity = '1' ;
} else {
get _config ( get _cookie ( 'wrapperr-admin' ) ) ;
}
2021-12-12 16:31:15 +00:00
2022-01-11 13:33:30 +00:00
}
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , "../api/set_config.php" ) ;
xhttp . send ( wrapperr _settings _data ) ;
return ;
}
2021-03-08 18:45:06 +00:00
2022-01-11 13:33:30 +00:00
function set _wrapperr _customization ( ) {
topFunction ( ) ;
var html = '<div class="form-group newline">' ;
html += '<button class="form-control btn" name="admin_menu_return_button" id="admin_menu_return_button" onclick="get_config(get_cookie(\'wrapperr-admin\'));"><img src="../assets/trash.svg" class="btn_logo"></img><p2 id="admin_menu_return_button_text">Return</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<hr>' ;
2021-12-12 16:31:15 +00:00
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<form id="wrapperr_customization_form" onsubmit="return false;">'
2021-03-08 18:45:06 +00:00
var temp _date = wrapped _start . toLocaleDateString ( "en-GB" , { // you can skip the first argument
year : "numeric" ,
month : "2-digit" ,
day : "2-digit" ,
hour : "2-digit" ,
minute : "2-digit" ,
second : "2-digit" ,
timezone : "Europe/London" ,
} ) ;
var temp _date = temp _date . split ( ',' ) ;
var temp _date _first = temp _date [ 0 ] . split ( '/' ) ;
var temp _date _second = temp _date [ 1 ] . split ( ':' ) ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
html += '<div class="warning">!<br>Load time for long wrapped periods are long, and leads to PHP/parsing errors. Consider enabling caching in Wrapperr settings and performing pre-caching once.</div>' ;
html += '</div>' ;
2021-03-08 18:45:06 +00:00
html += '<div class="form-group">' ;
2022-01-11 13:33:30 +00:00
html += '<label for="wrapped_start" title="The start of the period you want wrapped.">Start of wrapped period:<br>' ;
2021-03-08 18:45:06 +00:00
html += '<input type="datetime-local" class="form-control" id="wrapped_start" value="' + temp _date _first [ 2 ] . trim ( ) + '-' + temp _date _first [ 1 ] . trim ( ) + '-' + temp _date _first [ 0 ] . trim ( ) + 'T' + temp _date _second [ 0 ] . trim ( ) + ':' + temp _date _second [ 1 ] . trim ( ) + '" required /><br>' ;
html += '</div>' ;
var temp _date = wrapped _end . toLocaleDateString ( "en-GB" , { // you can skip the first argument
year : "numeric" ,
month : "2-digit" ,
day : "2-digit" ,
hour : "2-digit" ,
minute : "2-digit" ,
second : "2-digit" ,
timezone : "Europe/London" ,
} ) ;
var temp _date = temp _date . split ( ',' ) ;
var temp _date _first = temp _date [ 0 ] . split ( '/' ) ;
var temp _date _second = temp _date [ 1 ] . split ( ':' ) ;
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="wrapped_end" title="The end of your wrapped period. All data until this point is viable.">End of wrapped period:<br>' ;
2021-03-08 18:45:06 +00:00
html += '<input type="datetime-local" class="form-control" id="wrapped_end" value="' + temp _date _first [ 2 ] . trim ( ) + '-' + temp _date _first [ 1 ] . trim ( ) + '-' + temp _date _first [ 0 ] . trim ( ) + 'T' + temp _date _second [ 0 ] . trim ( ) + ':' + temp _date _second [ 1 ] . trim ( ) + '" required /></label>' ;
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
html += '<hr>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="stats_intro" title="Introduction text that is shown when the statistics are done loading. Could be used to inform about chosen timeframe. HTML allowed.">Introduction for statistics page:<br>' ;
2022-01-11 13:33:30 +00:00
html += '<textarea cols="40" rows="5" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 5em;" id="stats_intro" name="stats_intro" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<hr>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<label for="get_user_movie_stats" title="Includes movie statistics in your wrapped period.">Get users movie statistics:<br>' ;
html += '<input type="checkbox" class="form-control" id="get_user_movie_stats" ' ;
if ( get _user _movie _stats ) {
html += 'checked="' + get _user _movie _stats + '" ' ;
}
html += '/><br>' ;
html += '</div>' ;
html += '<div class="form_hidden" id="get_user_movie_stats_custom">' ;
html += '<div class="form_block" id="plural">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_title" title="Title on top of this section.">Movies title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_title" name="get_user_movie_stats_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_subtitle" title="Subtitle underneath title on top of this section.">Movies subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_subtitle" name="get_user_movie_stats_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_subsubtitle" title="Sub-subtitle underneath subtitle on top of this section.">Movies sub-subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_subsubtitle" name="get_user_movie_stats_subsubtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="singular">' ;
html += '<div class="form-group" id="singular">' ;
html += '<label for="get_user_movie_stats_subtitle_one" title="Subtitle underneath title on top of this section.">Movies subtitle for one movie:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_subtitle_one" name="get_user_movie_stats_subtitle_one" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_subsubtitle_one" title="Sub-subtitle underneath subtitle on top of this section.">Movies sub-subtitle for one movie:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_subsubtitle_one" name="get_user_movie_stats_subsubtitle_one" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="none">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_subtitle_none" title="Subtitle underneath title on top of this section.">Movies subtitle for no movies:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_subtitle_none" name="get_user_movie_stats_subtitle_none" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_subsubtitle_none" title="Sub-subtitle underneath subtitle on top of this section.">Movies sub-subtitle for no movies:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_subsubtitle_none" name="get_user_movie_stats_subsubtitle_none" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_top_movie" title="Custom title of the list of top movies (singular).">Title of top movie list:<br>' ;
html += '<input type="text" class="form-control" id="get_user_movie_stats_top_movie" value="' + get _user _movie _stats _top _movie + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_top_movie_plural" title="Custom title of the list of top movies (plural).">Title of top movies list:<br>' ;
html += '<input type="text" class="form-control" id="get_user_movie_stats_top_movie_plural" value="' + get _user _movie _stats _top _movie _plural + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_movie_completion_title" title="Title stating the completion of the seen movie.">Movie completion title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_movie_completion_title" name="get_user_movie_stats_movie_completion_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_movie_completion_title_plural" title="Title stating the average completion of the seen movies.">Movies average completion title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_movie_completion_title_plural" name="get_user_movie_stats_movie_completion_title_plural" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_movie_completion_subtitle" title="Subtitle underneath the movie-completion title.">Movies/movie completion subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_movie_completion_subtitle" name="get_user_movie_stats_movie_completion_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="plural">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_pause_title" title="Title of the paused movie section.">Movie paused title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_pause_title" name="get_user_movie_stats_pause_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_pause_subtitle" title="Subtitle of the paused movie section.">Movie paused subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_pause_subtitle" name="get_user_movie_stats_pause_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="singular">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_pause_title_one" title="Title of the paused movie section when one movie was watched, but still paused.">One movie paused title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_pause_title_one" name="get_user_movie_stats_pause_title_one" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_pause_subtitle_one" title="Subtitle of the paused movie section when one movie was watched, but still paused paused.">One movie paused subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_pause_subtitle_one" name="get_user_movie_stats_pause_subtitle_one" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="none">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_pause_title_none" title="Title of the paused movie section when no movies were ever paused.">No movie paused title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_pause_title_none" name="get_user_movie_stats_pause_title_none" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_pause_subtitle_none" title="Subtitle of the paused movie section when no movies were ever paused.">No movie paused subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_pause_subtitle_none" name="get_user_movie_stats_pause_subtitle_none" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_oldest_title" title="Title of the oldest movie section.">Movie oldest title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_oldest_title" name="get_user_movie_stats_oldest_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_oldest_subtitle" title="Subtitle of the oldest movie section. Applied if the other spesfic ones are not applicable.">Movie oldest subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_oldest_subtitle" name="get_user_movie_stats_oldest_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_oldest_subtitle_pre_1950" title="Subtitle of the oldest movie section. Applied if movie is older than 1950.">Movie oldest subtitle (<1950):<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_oldest_subtitle_pre_1950" name="get_user_movie_stats_oldest_subtitle_pre_1950" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_oldest_subtitle_pre_1975" title="Subtitle of the oldest movie section. Applied if movie is older than 1975.">Movie oldest subtitle (<1975):<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_oldest_subtitle_pre_1975" name="get_user_movie_stats_oldest_subtitle_pre_1975" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_oldest_subtitle_pre_2000" title="Subtitle of the oldest movie section. Applied if movie is older than 2000.">Movie oldest subtitle (<2000):<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_oldest_subtitle_pre_2000" name="get_user_movie_stats_oldest_subtitle_pre_2000" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_movie_stats_spent_title" title="Title of the time spent on movies section.">Movie spent title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_movie_stats_spent_title" name="get_user_movie_stats_spent_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button class="form-control btn" name="get_user_movie_stats_custom_button" id="get_user_movie_stats_custom_button" onclick="toggle_hidden_form(\'get_user_movie_stats_custom\')"><img src="../assets/tweak.svg" class="btn_logo"></img><p2 id="get_user_movie_stats_custom_button_text">Custom text</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<hr>' ;
2021-10-12 12:38:54 +00:00
html += '</div>' ;
2021-12-12 16:31:15 +00:00
html += '<div class="form-group">' ;
2022-01-11 13:33:30 +00:00
html += '<label for="get_user_show_stats" title="Includes show statistics in your wrapped period.">Get users show statistics:<br>' ;
html += '<input type="checkbox" class="form-control" id="get_user_show_stats" ' ;
if ( get _user _show _stats ) {
html += 'checked="' + get _user _show _stats + '" ' ;
}
html += '/><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_buddy" title="Includes the users top show-buddy in your wrapped period. Requires show stats.">Get users show-buddy:<br>' ;
html += '<input type="checkbox" class="form-control" id="get_user_show_stats_buddy" ' ;
if ( get _user _show _stats _buddy ) {
html += 'checked="' + get _user _show _stats _buddy + '" ' ;
}
html += '/><br>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '</div>' ;
html += '<div class="form_hidden" id="get_user_show_stats_custom">' ;
html += '<div class="form_block" id="plural">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_title" title="Title on top of this section.">Shows title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_title" name="get_user_show_stats_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_subtitle" title="Subtitle underneath title on top of this section.">Shows subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_subtitle" name="get_user_show_stats_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_subsubtitle" title="Sub-subtitle underneath subtitle on top of this section.">Shows sub-subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_subsubtitle" name="get_user_show_stats_subsubtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="singular">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_subtitle_one" title="Subtitle underneath title on top of this section.">Shows subtitle for one show:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_subtitle_one" name="get_user_show_stats_subtitle_one" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_subsubtitle_one" title="Sub-subtitle underneath subtitle on top of this section.">Shows sub-subtitle for one show:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_subsubtitle_one" name="get_user_show_stats_subsubtitle_one" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="none">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_subtitle_none" title="Subtitle underneath title on top of this section.">Shows subtitle for no shows:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_subtitle_none" name="get_user_show_stats_subtitle_none" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_subsubtitle_none" title="Sub-subtitle underneath subtitle on top of this section.">Shows sub-subtitle for no shows:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_subsubtitle_none" name="get_user_show_stats_subsubtitle_none" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_top_show" title="Custom title of the list of top show (singular).">Title of top show list:<br>' ;
html += '<input type="text" class="form-control" id="get_user_show_stats_top_show" value="' + get _user _show _stats _top _show + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_top_show_plural" title="Custom title of the list of top shows (plural).">Title of top shows list:<br>' ;
html += '<input type="text" class="form-control" id="get_user_show_stats_top_show_plural" value="' + get _user _show _stats _top _show _plural + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_most_played_title" title="Title on top of this section showing the top played episode.">Shows title for top episode:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_most_played_title" name="get_user_show_stats_most_played_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_most_played_subtitle" title="Subtitle underneath the title of this section.">Shows subtitle for top episode:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_most_played_subtitle" name="get_user_show_stats_most_played_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_buddy_title" title="Title on top of this section showing the top show and the buddy who watches it as well.">Shows title buddy section:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_buddy_title" name="get_user_show_stats_buddy_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_buddy_subtitle" title="Subtitle underneath the title of this section.">Shows subtitle buddy section:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_buddy_subtitle" name="get_user_show_stats_buddy_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="none">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_buddy_title_none" title="Title on top of this section showing the top show and the buddy who watches it as well, only, no buddy could be found.">Shows title buddy section (none):<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_buddy_title_none" name="get_user_show_stats_buddy_title_none" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_buddy_subtitle_none" title="Subtitle underneath the title of this section.">Shows subtitle buddy section (none):<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_buddy_subtitle_none" name="get_user_show_stats_buddy_subtitle_none" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_show_stats_spent_title" title="Title of the time spent on shows section.">Show spent title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_show_stats_spent_title" name="get_user_show_stats_spent_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button class="form-control btn" name="get_user_show_stats_custom_button" id="get_user_show_stats_custom_button" onclick="toggle_hidden_form(\'get_user_show_stats_custom\')"><img src="../assets/tweak.svg" class="btn_logo"></img><p2 id="get_user_show_stats_custom_button_text">Custom text</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<hr>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<label for="get_user_music_stats" title="Includes music statistics in your wrapped period.">Get users music statistics:<br>' ;
html += '<input type="checkbox" class="form-control" id="get_user_music_stats" ' ;
if ( get _user _music _stats ) {
html += 'checked="' + get _user _music _stats + '" ' ;
2021-12-12 16:31:15 +00:00
}
html += '/><br>' ;
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form_hidden" id="get_user_music_stats_custom">' ;
html += '<div class="form_block">' ;
html += '<div class="form-group" id="plural">' ;
html += '<label for="get_user_music_stats_title" title="Title on top of this section.">Music title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_title" name="get_user_music_stats_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_subtitle" title="Subtitle underneath title on top of this section.">Music subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_subtitle" name="get_user_music_stats_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_subsubtitle" title="Sub-subtitle underneath subtitle on top of this section.">Music sub-subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_subsubtitle" name="get_user_music_stats_subsubtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="singular">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_subtitle_one" title="Subtitle underneath title on top of this section.">Music subtitle for one track:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_subtitle_one" name="get_user_music_stats_subtitle_one" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_subsubtitle_one" title="Sub-subtitle underneath subtitle on top of this section.">Music sub-subtitle for one track:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_subsubtitle_one" name="get_user_music_stats_subsubtitle_one" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="none">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_subtitle_none" title="Subtitle underneath title on top of this section.">Music subtitle for no tracks:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_subtitle_none" name="get_user_music_stats_subtitle_none" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_subsubtitle_none" title="Sub-subtitle underneath subtitle on top of this section.">Music sub-subtitle for no tracks:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_subsubtitle_none" name="get_user_music_stats_subsubtitle_none" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="singular">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_top_track" title="Custom title of the list of top track (singular).">Title of top track list:<br>' ;
html += '<input type="text" class="form-control" id="get_user_music_stats_top_track" value="' + get _user _music _stats _top _track + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="plural">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_top_track_plural" title="Custom title of the list of top tracks (plural).">Title of top tracks list:<br>' ;
html += '<input type="text" class="form-control" id="get_user_music_stats_top_track_plural" value="' + get _user _music _stats _top _track _plural + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_top_album_plural" title="Custom title of the list of top albums (plural).">Title of top albums list:<br>' ;
html += '<input type="text" class="form-control" id="get_user_music_stats_top_album_plural" value="' + get _user _music _stats _top _album _plural + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_top_artist_plural" title="Custom title of the list of top artists (plural).">Title of top artists list:<br>' ;
html += '<input type="text" class="form-control" id="get_user_music_stats_top_artist_plural" value="' + get _user _music _stats _top _artist _plural + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_oldest_album_title" title="Title on top of this section.">Music title for oldest album:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_oldest_album_title" name="get_user_music_stats_oldest_album_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
2021-10-04 12:57:28 +00:00
2022-01-11 13:33:30 +00:00
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_oldest_album_subtitle" title="Subtitle underneath title of this section.">Music subtitle for oldest album:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_oldest_album_subtitle" name="get_user_music_stats_oldest_album_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
2021-03-08 18:45:06 +00:00
2022-01-11 13:33:30 +00:00
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_spent_title" title="Title on top of this section showing time spent listening to music.">Music spent title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_spent_title" name="get_user_music_stats_spent_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_user_music_stats_spent_subtitle" title="Subtitle underneath title of this section.">Music spent subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_user_music_stats_spent_subtitle" name="get_user_music_stats_spent_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
html += '<button class="form-control btn" name="get_user_music_stats_custom_button" id="get_user_music_stats_custom_button" onclick="toggle_hidden_form(\'get_user_music_stats_custom\')"><img src="../assets/tweak.svg" class="btn_logo"></img><p2 id="get_user_music_stats_custom_button_text">Custom text</p2></button>' ;
2021-10-01 23:21:18 +00:00
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
2021-10-04 12:57:28 +00:00
html += '<hr>' ;
2022-01-11 13:33:30 +00:00
html += '</div>' ;
2021-10-04 12:57:28 +00:00
2021-10-01 23:21:18 +00:00
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="get_year_stats_movies" title="Includes server-wide movie statistics in your wrapped period.">Get server-wide movie statistics:<br>' ;
2021-10-01 23:21:18 +00:00
html += '<input type="checkbox" class="form-control" id="get_year_stats_movies" ' ;
if ( get _year _stats _movies ) {
html += 'checked="' + get _year _stats _movies + '" ' ;
}
html += '/><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="get_year_stats_shows" title="Includes server-wide show statistics in your wrapped period.">Get server-wide show statistics:<br>' ;
2021-10-01 23:21:18 +00:00
html += '<input type="checkbox" class="form-control" id="get_year_stats_shows" ' ;
if ( get _year _stats _shows ) {
html += 'checked="' + get _year _stats _shows + '" ' ;
}
html += '/><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="get_year_stats_music" title="Includes server-wide music statistics in your wrapped period.">Get server-wide music statistics:<br>' ;
2021-10-01 23:21:18 +00:00
html += '<input type="checkbox" class="form-control" id="get_year_stats_music" ' ;
if ( get _year _stats _music ) {
html += 'checked="' + get _year _stats _music + '" ' ;
}
html += '/><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="get_year_stats_leaderboard" title="Creates a user leaderboard based on the server-wide statistics in your wrapped period.">Get server-wide leaderboard rankings:<br>' ;
2021-10-01 23:21:18 +00:00
html += '<input type="checkbox" class="form-control" id="get_year_stats_leaderboard" ' ;
if ( get _year _stats _leaderboard ) {
html += 'checked="' + get _year _stats _leaderboard + '" ' ;
2021-03-08 18:45:06 +00:00
}
html += '/><br>' ;
2021-09-21 13:01:14 +00:00
html += '</div>' ;
2021-10-04 12:57:28 +00:00
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
html += '</div>' ;
html += '<div class="form_hidden" id="get_year_stats_custom">' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_title" title="Title on top of this section.">Server-wide title:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_year_stats_title" name="get_year_stats_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_subtitle" title="Subtitle underneath title on top of this section.">Server-wide subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_year_stats_subtitle" name="get_year_stats_subtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_subsubtitle" title="Sub-subtitle underneath subtitle on top of this section.">Server-wide sub-subtitle:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_year_stats_subsubtitle" name="get_year_stats_subsubtitle" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block" id="">' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_movies_title" title="Custom title of the list of top movies.">Title of top movies list:<br>' ;
html += '<input type="text" class="form-control" id="get_year_stats_movies_title" value="' + get _year _stats _movies _title + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_shows_title" title="Custom title of the list of top shows.">Title of top shows list:<br>' ;
html += '<input type="text" class="form-control" id="get_year_stats_shows_title" value="' + get _year _stats _shows _title + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_music_title" title="Custom title of the list of top artists.">Title of top artists list:<br>' ;
html += '<input type="text" class="form-control" id="get_year_stats_music_title" value="' + get _year _stats _music _title + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_leaderboard_title" title="Custom title of the list of top users.">Title of top users list:<br>' ;
html += '<input type="text" class="form-control" id="get_year_stats_leaderboard_title" value="' + get _year _stats _leaderboard _title + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_movies_duration_title" title="Title on top of this section showing duration spent on movies.">Server-wide movie duration:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_year_stats_movies_duration_title" name="get_year_stats_movies_duration_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_shows_duration_title" title="Title on top of this section showing duration spent on shows.">Server-wide show duration:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_year_stats_shows_duration_title" name="get_year_stats_shows_duration_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_music_duration_title" title="Title on top of this section showing duration spent on music.">Server-wide music duration:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_year_stats_music_duration_title" name="get_year_stats_music_duration_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="get_year_stats_duration_sum_title" title="Title on top of this section showing duration spent on all categories.">Server-wide content duration:<br>' ;
html += '<textarea cols="40" rows="2" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 2em;" id="get_year_stats_duration_sum_title" name="get_year_stats_duration_sum_title" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button class="form-control btn" name="get_year_stats_custom_button" id="get_year_stats_custom_button" onclick="toggle_hidden_form(\'get_year_stats_custom\')"><img src="../assets/tweak.svg" class="btn_logo"></img><p2 id="get_year_stats_custom_button_text">Custom text</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
2021-10-04 12:57:28 +00:00
html += '<hr>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
html += '<label for="stats_outro" title="Text that is shown at the bottom, when the statistics are done. HTML allowed.">Outro for statistics page:<br>' ;
html += '<textarea cols="40" rows="5" class="form-control" style="overflow-x: hidden;resize:vertical;min-height: 5em;" id="stats_outro" name="stats_outro" value="" autocomplete="off"></textarea></label>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<hr>' ;
html += '</div>' ;
html += '<div class="form_hidden" id="wrapperr_language">' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_and" title="Word alternative for when \'and\' appears.">Alternative for \'and\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_and" value="' + wrapperr _and + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_play" title="Word alternative for when \'play\' appears.">Alternative for \'play\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_play" value="' + wrapperr _play + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_play_plural" title="Word alternative for when \'plays\' appears.">Alternative for \'plays\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_play_plural" value="' + wrapperr _play _plural + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_day" title="Word alternative for when \'day\' appears.">Alternative for \'day\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_day" value="' + wrapperr _day + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_day_plural" title="Word alternative for when \'days\' appears.">Alternative for \'days\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_day_plural" value="' + wrapperr _day _plural + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_hour" title="Word alternative for when \'hour\' appears.">Alternative for \'hour\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_hour" value="' + wrapperr _hour + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_hour_plural" title="Word alternative for when \'hours\' appears.">Alternative for \'hours\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_hour_plural" value="' + wrapperr _hour _plural + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_minute" title="Word alternative for when \'minute\' appears.">Alternative for \'minute\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_minute" value="' + wrapperr _minute + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_minute_plural" title="Word alternative for when \'minutes\' appears.">Alternative for \'minutes\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_minute_plural" value="' + wrapperr _minute _plural + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_second" title="Word alternative for when \'second\' appears.">Alternative for \'second\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_second" value="' + wrapperr _second + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_second_plural" title="Word alternative for when \'seconds\' appears.">Alternative for \'seconds\':<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_second_plural" value="' + wrapperr _second _plural + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form_block">' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_sort_plays" title="Text alternative for \'Sort by plays\' button.">\'Sort by plays\' alternative:<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_sort_plays" value="' + wrapperr _sort _plays + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '<div class="form-group">' ;
html += '<label for="wrapperr_sort_duration" title="Text alternative for \'Sort by duration\' button.">\'Sort by duration\' alternative:<br>' ;
html += '<input type="text" class="form-control" id="wrapperr_sort_duration" value="' + wrapperr _sort _duration + '" autocomplete="off" placeholder="" required /><br>' ;
html += '</div>' ;
html += '</div>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<button class="form-control btn" name="wrapperr_language_button" id="get_user_show_stats_custom_button" onclick="toggle_hidden_form(\'wrapperr_language\')"><img src="../assets/tweak.svg" class="btn_logo"></img><p2 id="wrapperr_language_button_text">Custom language</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<hr>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline" title="Clear the cache now to include the newest settings.">' ;
2021-12-12 16:31:15 +00:00
html += '<label for="clear_cache">Clear cache now:<br>' ;
2021-03-08 18:45:06 +00:00
html += '<input type="checkbox" class="form-control" id="clear_cache" checked /></label>' ;
html += '</div>' ;
2022-01-11 13:33:30 +00:00
html += '<div class="form-group newline">' ;
html += '<button type="submit" class="form-control btn" onclick="set_wrapperr_customization_call();" id="set_wrapperr_customization_form_button"><img src="../assets/done.svg" class="btn_logo"></img><p2 id="set_wrapperr_customization_form_button_text">Save</p2></button>' ;
2021-03-08 18:45:06 +00:00
html += '</div>' ;
html += '</form>' ;
2022-01-11 13:33:30 +00:00
// Place content from config
2021-03-08 18:45:06 +00:00
document . getElementById ( "setup" ) . innerHTML = html ;
2022-01-11 13:33:30 +00:00
2021-10-12 12:38:54 +00:00
document . getElementById ( "stats_intro" ) . value = stats _intro ;
2022-01-11 13:33:30 +00:00
document . getElementById ( "stats_outro" ) . value = stats _outro ;
document . getElementById ( "get_user_movie_stats_title" ) . value = get _user _movie _stats _title ;
document . getElementById ( "get_user_movie_stats_subtitle" ) . value = get _user _movie _stats _subtitle ;
document . getElementById ( "get_user_movie_stats_subsubtitle" ) . value = get _user _movie _stats _subsubtitle ;
document . getElementById ( "get_user_movie_stats_subtitle_one" ) . value = get _user _movie _stats _subtitle _one ;
document . getElementById ( "get_user_movie_stats_subsubtitle_one" ) . value = get _user _movie _stats _subsubtitle _one ;
document . getElementById ( "get_user_movie_stats_subtitle_none" ) . value = get _user _movie _stats _subtitle _none ;
document . getElementById ( "get_user_movie_stats_subsubtitle_none" ) . value = get _user _movie _stats _subsubtitle _none ;
document . getElementById ( "get_user_movie_stats_movie_completion_title" ) . value = get _user _movie _stats _movie _completion _title ;
document . getElementById ( "get_user_movie_stats_movie_completion_title_plural" ) . value = get _user _movie _stats _movie _completion _title _plural ;
document . getElementById ( "get_user_movie_stats_movie_completion_subtitle" ) . value = get _user _movie _stats _movie _completion _subtitle ;
document . getElementById ( "get_user_movie_stats_pause_title" ) . value = get _user _movie _stats _pause _title ;
document . getElementById ( "get_user_movie_stats_pause_subtitle" ) . value = get _user _movie _stats _pause _subtitle ;
document . getElementById ( "get_user_movie_stats_pause_title_one" ) . value = get _user _movie _stats _pause _title _one ;
document . getElementById ( "get_user_movie_stats_pause_subtitle_one" ) . value = get _user _movie _stats _pause _subtitle _one ;
document . getElementById ( "get_user_movie_stats_pause_title_none" ) . value = get _user _movie _stats _pause _title _none ;
document . getElementById ( "get_user_movie_stats_pause_subtitle_none" ) . value = get _user _movie _stats _pause _subtitle _none ;
document . getElementById ( "get_user_movie_stats_oldest_title" ) . value = get _user _movie _stats _oldest _title ;
document . getElementById ( "get_user_movie_stats_oldest_subtitle" ) . value = get _user _movie _stats _oldest _subtitle ;
document . getElementById ( "get_user_movie_stats_oldest_subtitle_pre_1950" ) . value = get _user _movie _stats _oldest _subtitle _pre _1950 ;
document . getElementById ( "get_user_movie_stats_oldest_subtitle_pre_1975" ) . value = get _user _movie _stats _oldest _subtitle _pre _1975 ;
document . getElementById ( "get_user_movie_stats_oldest_subtitle_pre_2000" ) . value = get _user _movie _stats _oldest _subtitle _pre _2000 ;
document . getElementById ( "get_user_movie_stats_spent_title" ) . value = get _user _movie _stats _spent _title ;
document . getElementById ( "get_user_show_stats_title" ) . value = get _user _show _stats _title ;
document . getElementById ( "get_user_show_stats_subtitle" ) . value = get _user _show _stats _subtitle ;
document . getElementById ( "get_user_show_stats_subsubtitle" ) . value = get _user _show _stats _subsubtitle ;
document . getElementById ( "get_user_show_stats_subtitle_one" ) . value = get _user _show _stats _subtitle _one ;
document . getElementById ( "get_user_show_stats_subsubtitle_one" ) . value = get _user _show _stats _subsubtitle _one ;
document . getElementById ( "get_user_show_stats_subtitle_none" ) . value = get _user _show _stats _subtitle _none ;
document . getElementById ( "get_user_show_stats_subsubtitle_none" ) . value = get _user _show _stats _subsubtitle _none ;
document . getElementById ( "get_user_show_stats_most_played_title" ) . value = get _user _show _stats _most _played _title ;
document . getElementById ( "get_user_show_stats_most_played_subtitle" ) . value = get _user _show _stats _most _played _subtitle ;
document . getElementById ( "get_user_show_stats_buddy_title" ) . value = get _user _show _stats _buddy _title ;
document . getElementById ( "get_user_show_stats_buddy_subtitle" ) . value = get _user _show _stats _buddy _subtitle ;
document . getElementById ( "get_user_show_stats_buddy_title_none" ) . value = get _user _show _stats _buddy _title _none ;
document . getElementById ( "get_user_show_stats_buddy_subtitle_none" ) . value = get _user _show _stats _buddy _subtitle _none ;
document . getElementById ( "get_user_show_stats_spent_title" ) . value = get _user _show _stats _spent _title ;
document . getElementById ( "get_user_music_stats_title" ) . value = get _user _music _stats _title ;
document . getElementById ( "get_user_music_stats_subtitle" ) . value = get _user _music _stats _subtitle ;
document . getElementById ( "get_user_music_stats_subsubtitle" ) . value = get _user _music _stats _subsubtitle ;
document . getElementById ( "get_user_music_stats_subtitle_one" ) . value = get _user _music _stats _subtitle _one ;
document . getElementById ( "get_user_music_stats_subsubtitle_one" ) . value = get _user _music _stats _subsubtitle _one ;
document . getElementById ( "get_user_music_stats_subtitle_none" ) . value = get _user _music _stats _subtitle _none ;
document . getElementById ( "get_user_music_stats_subsubtitle_none" ) . value = get _user _music _stats _subsubtitle _none ;
document . getElementById ( "get_user_music_stats_spent_title" ) . value = get _user _music _stats _spent _title ;
document . getElementById ( "get_user_music_stats_spent_subtitle" ) . value = get _user _music _stats _spent _subtitle ;
document . getElementById ( "get_user_music_stats_oldest_album_title" ) . value = get _user _music _stats _oldest _album _title ;
document . getElementById ( "get_user_music_stats_oldest_album_subtitle" ) . value = get _user _music _stats _oldest _album _subtitle ;
document . getElementById ( "get_year_stats_title" ) . value = get _year _stats _title ;
document . getElementById ( "get_year_stats_subtitle" ) . value = get _year _stats _subtitle ;
document . getElementById ( "get_year_stats_subsubtitle" ) . value = get _year _stats _subsubtitle ;
document . getElementById ( "get_year_stats_movies_duration_title" ) . value = get _year _stats _movies _duration _title ;
document . getElementById ( "get_year_stats_shows_duration_title" ) . value = get _year _stats _shows _duration _title ;
document . getElementById ( "get_year_stats_music_duration_title" ) . value = get _year _stats _music _duration _title ;
document . getElementById ( "get_year_stats_duration_sum_title" ) . value = get _year _stats _duration _sum _title ;
}
function toggle _hidden _form ( div _id ) {
var div = document . getElementById ( div _id ) ;
if ( div . className === "form_shown" ) {
div . classList . remove ( 'form_shown' ) ;
div . classList . add ( 'form_hidden' ) ;
} else {
div . classList . remove ( 'form_hidden' ) ;
div . classList . add ( 'form_shown' ) ;
}
}
function set _wrapperr _customization _call ( ) {
document . getElementById ( "set_wrapperr_customization_form_button" ) . disabled = true ;
document . getElementById ( "set_wrapperr_customization_form_button" ) . style . opacity = '0.5' ;
wrapped _start = new Date ( document . getElementById ( 'wrapped_start' ) . value ) ;
wrapped _end = new Date ( document . getElementById ( 'wrapped_end' ) . value ) ;
stats _intro = document . getElementById ( 'stats_intro' ) . value ;
stats _outro = document . getElementById ( 'stats_outro' ) . value ;
get _user _movie _stats = document . getElementById ( 'get_user_movie_stats' ) . checked ;
get _user _movie _stats _title = document . getElementById ( 'get_user_movie_stats_title' ) . value ;
get _user _movie _stats _subtitle = document . getElementById ( 'get_user_movie_stats_subtitle' ) . value ;
get _user _movie _stats _subsubtitle = document . getElementById ( 'get_user_movie_stats_subsubtitle' ) . value ;
get _user _movie _stats _subtitle _one = document . getElementById ( 'get_user_movie_stats_subtitle_one' ) . value ;
get _user _movie _stats _subsubtitle _one = document . getElementById ( 'get_user_movie_stats_subsubtitle_one' ) . value ;
get _user _movie _stats _subtitle _none = document . getElementById ( 'get_user_movie_stats_subtitle_none' ) . value ;
get _user _movie _stats _subsubtitle _none = document . getElementById ( 'get_user_movie_stats_subsubtitle_none' ) . value ;
get _user _movie _stats _top _movie = document . getElementById ( 'get_user_movie_stats_top_movie' ) . value ;
get _user _movie _stats _top _movie _plural = document . getElementById ( 'get_user_movie_stats_top_movie_plural' ) . value ;
get _user _movie _stats _movie _completion _title = document . getElementById ( 'get_user_movie_stats_movie_completion_title' ) . value ;
get _user _movie _stats _movie _completion _title _plural = document . getElementById ( 'get_user_movie_stats_movie_completion_title_plural' ) . value ;
get _user _movie _stats _movie _completion _subtitle = document . getElementById ( 'get_user_movie_stats_movie_completion_subtitle' ) . value ;
get _user _movie _stats _pause _title = document . getElementById ( 'get_user_movie_stats_pause_title' ) . value ;
get _user _movie _stats _pause _subtitle = document . getElementById ( 'get_user_movie_stats_pause_subtitle' ) . value ;
get _user _movie _stats _pause _title _one = document . getElementById ( 'get_user_movie_stats_pause_title_one' ) . value ;
get _user _movie _stats _pause _subtitle _one = document . getElementById ( 'get_user_movie_stats_pause_subtitle_one' ) . value ;
get _user _movie _stats _pause _title _none = document . getElementById ( 'get_user_movie_stats_pause_title_none' ) . value ;
get _user _movie _stats _pause _subtitle _none = document . getElementById ( 'get_user_movie_stats_pause_subtitle_none' ) . value ;
get _user _movie _stats _oldest _title = document . getElementById ( 'get_user_movie_stats_oldest_title' ) . value ;
get _user _movie _stats _oldest _subtitle = document . getElementById ( 'get_user_movie_stats_oldest_subtitle' ) . value ;
get _user _movie _stats _oldest _subtitle _pre _1950 = document . getElementById ( 'get_user_movie_stats_oldest_subtitle_pre_1950' ) . value ;
get _user _movie _stats _oldest _subtitle _pre _1975 = document . getElementById ( 'get_user_movie_stats_oldest_subtitle_pre_1975' ) . value ;
get _user _movie _stats _oldest _subtitle _pre _2000 = document . getElementById ( 'get_user_movie_stats_oldest_subtitle_pre_2000' ) . value ;
get _user _movie _stats _spent _title = document . getElementById ( 'get_user_movie_stats_spent_title' ) . value ;
get _user _show _stats = document . getElementById ( 'get_user_show_stats' ) . checked ;
get _user _show _stats _buddy = document . getElementById ( 'get_user_show_stats_buddy' ) . checked ;
get _user _show _stats _title = document . getElementById ( 'get_user_show_stats_title' ) . value ;
get _user _show _stats _subtitle = document . getElementById ( 'get_user_show_stats_subtitle' ) . value ;
get _user _show _stats _subsubtitle = document . getElementById ( 'get_user_show_stats_subsubtitle' ) . value ;
get _user _show _stats _subtitle _one = document . getElementById ( 'get_user_show_stats_subtitle_one' ) . value ;
get _user _show _stats _subsubtitle _one = document . getElementById ( 'get_user_show_stats_subsubtitle_one' ) . value ;
get _user _show _stats _subtitle _none = document . getElementById ( 'get_user_show_stats_subtitle_none' ) . value ;
get _user _show _stats _subsubtitle _none = document . getElementById ( 'get_user_show_stats_subsubtitle_none' ) . value ;
get _user _show _stats _top _show = document . getElementById ( 'get_user_show_stats_top_show' ) . value ;
get _user _show _stats _top _show _plural = document . getElementById ( 'get_user_show_stats_top_show_plural' ) . value ;
get _user _show _stats _most _played _title = document . getElementById ( 'get_user_show_stats_most_played_title' ) . value ;
get _user _show _stats _most _played _subtitle = document . getElementById ( 'get_user_show_stats_most_played_subtitle' ) . value ;
get _user _show _stats _buddy _title = document . getElementById ( 'get_user_show_stats_buddy_title' ) . value ;
get _user _show _stats _buddy _subtitle = document . getElementById ( 'get_user_show_stats_buddy_subtitle' ) . value ;
get _user _show _stats _buddy _title _none = document . getElementById ( 'get_user_show_stats_buddy_title_none' ) . value ;
get _user _show _stats _buddy _subtitle _none = document . getElementById ( 'get_user_show_stats_buddy_subtitle_none' ) . value ;
get _user _show _stats _spent _title = document . getElementById ( 'get_user_show_stats_spent_title' ) . value ;
get _user _music _stats = document . getElementById ( 'get_user_music_stats' ) . checked ;
get _user _music _stats _title = document . getElementById ( 'get_user_music_stats_title' ) . value ;
get _user _music _stats _subtitle = document . getElementById ( 'get_user_music_stats_subtitle' ) . value ;
get _user _music _stats _subsubtitle = document . getElementById ( 'get_user_music_stats_subsubtitle' ) . value ;
get _user _music _stats _subtitle _one = document . getElementById ( 'get_user_music_stats_subtitle_one' ) . value ;
get _user _music _stats _subsubtitle _one = document . getElementById ( 'get_user_music_stats_subsubtitle_one' ) . value ;
get _user _music _stats _subtitle _none = document . getElementById ( 'get_user_music_stats_subtitle_none' ) . value ;
get _user _music _stats _subsubtitle _none = document . getElementById ( 'get_user_music_stats_subsubtitle_none' ) . value ;
get _user _music _stats _top _track = document . getElementById ( 'get_user_music_stats_top_track' ) . value ;
get _user _music _stats _top _track _plural = document . getElementById ( 'get_user_music_stats_top_track_plural' ) . value ;
get _user _music _stats _top _album _plural = document . getElementById ( 'get_user_music_stats_top_album_plural' ) . value ;
get _user _music _stats _top _artist _plural = document . getElementById ( 'get_user_music_stats_top_artist_plural' ) . value ;
get _user _music _stats _spent _title = document . getElementById ( 'get_user_music_stats_spent_title' ) . value ;
get _user _music _stats _spent _subtitle = document . getElementById ( 'get_user_music_stats_spent_subtitle' ) . value ;
get _user _music _stats _oldest _album _title = document . getElementById ( 'get_user_music_stats_oldest_album_title' ) . value ;
get _user _music _stats _oldest _album _subtitle = document . getElementById ( 'get_user_music_stats_oldest_album_subtitle' ) . value ;
get _year _stats _title = document . getElementById ( 'get_year_stats_title' ) . value ;
get _year _stats _subtitle = document . getElementById ( 'get_year_stats_subtitle' ) . value ;
get _year _stats _subsubtitle = document . getElementById ( 'get_year_stats_subsubtitle' ) . value ;
get _year _stats _movies = document . getElementById ( 'get_year_stats_movies' ) . checked ;
get _year _stats _movies _title = document . getElementById ( 'get_year_stats_movies_title' ) . value ;
get _year _stats _movies _duration _title = document . getElementById ( 'get_year_stats_movies_duration_title' ) . value ;
get _year _stats _shows = document . getElementById ( 'get_year_stats_shows' ) . checked ;
get _year _stats _shows _title = document . getElementById ( 'get_year_stats_shows_title' ) . value ;
get _year _stats _shows _duration _title = document . getElementById ( 'get_year_stats_shows_duration_title' ) . value ;
get _year _stats _music = document . getElementById ( 'get_year_stats_music' ) . checked ;
get _year _stats _music _title = document . getElementById ( 'get_year_stats_music_title' ) . value ;
get _year _stats _music _duration _title = document . getElementById ( 'get_year_stats_music_duration_title' ) . value ;
get _year _stats _leaderboard = document . getElementById ( 'get_year_stats_leaderboard' ) . checked ;
get _year _stats _leaderboard _title = document . getElementById ( 'get_year_stats_leaderboard_title' ) . value ;
get _year _stats _duration _sum _title = document . getElementById ( 'get_year_stats_duration_sum_title' ) . value ;
clear _cache = document . getElementById ( 'clear_cache' ) . checked ;
wrapperr _and = document . getElementById ( "wrapperr_and" ) . value ;
wrapperr _play = document . getElementById ( "wrapperr_play" ) . value ;
wrapperr _play _plural = document . getElementById ( "wrapperr_play_plural" ) . value ;
wrapperr _day = document . getElementById ( "wrapperr_day" ) . value ;
wrapperr _day _plural = document . getElementById ( "wrapperr_day_plural" ) . value ;
wrapperr _hour = document . getElementById ( "wrapperr_hour" ) . value ;
wrapperr _hour _plural = document . getElementById ( "wrapperr_hour_plural" ) . value ;
wrapperr _minute = document . getElementById ( "wrapperr_minute" ) . value ;
wrapperr _minute _plural = document . getElementById ( "wrapperr_minute_plural" ) . value ;
wrapperr _second = document . getElementById ( "wrapperr_second" ) . value ;
wrapperr _second _plural = document . getElementById ( "wrapperr_second_plural" ) . value ;
wrapperr _sort _plays = document . getElementById ( "wrapperr_sort_plays" ) . value ;
wrapperr _sort _duration = document . getElementById ( "wrapperr_sort_duration" ) . value ;
if ( wrapped _end < wrapped _start ) {
document . getElementById ( "set_wrapperr_customization_form_button" ) . disabled = false ;
document . getElementById ( "set_wrapperr_customization_form_button" ) . style . opacity = '1' ;
alert ( 'The wrapped end period must be later than the wrapped start period.' ) ;
document . getElementById ( 'wrapped_end' ) . focus ( ) ;
return ;
}
if ( wrapped _end === '' ) {
document . getElementById ( "set_wrapperr_customization_form_button" ) . disabled = false ;
document . getElementById ( "set_wrapperr_customization_form_button" ) . style . opacity = '1' ;
alert ( 'Ending of wrapped period is required for Wrapperr to function.' ) ;
document . getElementById ( 'wrapped_end' ) . focus ( ) ;
return ;
}
if ( wrapped _start === '' ) {
document . getElementById ( "set_wrapperr_customization_form_button" ) . disabled = false ;
document . getElementById ( "set_wrapperr_customization_form_button" ) . style . opacity = '1' ;
alert ( 'Start of wrapped period is required for Wrapperr to function.' ) ;
document . getElementById ( 'wrapped_start' ) . focus ( ) ;
return ;
}
wrapperr _customization _form = {
"cookie" : cookie ,
"clear_cache" : clear _cache ,
"data_type" : "wrapperr_customization" ,
"data" : {
"wrapped_start" : Math . round ( wrapped _start . getTime ( ) / 1000 ) ,
"wrapped_end" : Math . round ( wrapped _end . getTime ( ) / 1000 ) ,
"stats_intro" : stats _intro ,
"stats_outro" : stats _outro ,
"get_user_movie_stats" : get _user _movie _stats ,
"get_user_movie_stats_title" : get _user _movie _stats _title ,
"get_user_movie_stats_subtitle" : get _user _movie _stats _subtitle ,
"get_user_movie_stats_subsubtitle" : get _user _movie _stats _subsubtitle ,
"get_user_movie_stats_subtitle_one" : get _user _movie _stats _subtitle _one ,
"get_user_movie_stats_subsubtitle_one" : get _user _movie _stats _subsubtitle _one ,
"get_user_movie_stats_subtitle_none" : get _user _movie _stats _subtitle _none ,
"get_user_movie_stats_subsubtitle_none" : get _user _movie _stats _subsubtitle _none ,
"get_user_movie_stats_top_movie" : get _user _movie _stats _top _movie ,
"get_user_movie_stats_top_movie_plural" : get _user _movie _stats _top _movie _plural ,
"get_user_movie_stats_movie_completion_title" : get _user _movie _stats _movie _completion _title ,
"get_user_movie_stats_movie_completion_title_plural" : get _user _movie _stats _movie _completion _title _plural ,
"get_user_movie_stats_movie_completion_subtitle" : get _user _movie _stats _movie _completion _subtitle ,
"get_user_movie_stats_pause_title" : get _user _movie _stats _pause _title ,
"get_user_movie_stats_pause_subtitle" : get _user _movie _stats _pause _subtitle ,
"get_user_movie_stats_pause_title_one" : get _user _movie _stats _pause _title _one ,
"get_user_movie_stats_pause_subtitle_one" : get _user _movie _stats _pause _subtitle _one ,
"get_user_movie_stats_pause_title_none" : get _user _movie _stats _pause _title _none ,
"get_user_movie_stats_pause_subtitle_none" : get _user _movie _stats _pause _subtitle _none ,
"get_user_movie_stats_oldest_title" : get _user _movie _stats _oldest _title ,
"get_user_movie_stats_oldest_subtitle" : get _user _movie _stats _oldest _subtitle ,
"get_user_movie_stats_oldest_subtitle_pre_1950" : get _user _movie _stats _oldest _subtitle _pre _1950 ,
"get_user_movie_stats_oldest_subtitle_pre_1975" : get _user _movie _stats _oldest _subtitle _pre _1975 ,
"get_user_movie_stats_oldest_subtitle_pre_2000" : get _user _movie _stats _oldest _subtitle _pre _2000 ,
"get_user_movie_stats_spent_title" : get _user _movie _stats _spent _title ,
"get_user_show_stats" : get _user _show _stats ,
"get_user_show_stats_buddy" : get _user _show _stats _buddy ,
"get_user_show_stats_title" : get _user _show _stats _title ,
"get_user_show_stats_subtitle" : get _user _show _stats _subtitle ,
"get_user_show_stats_subsubtitle" : get _user _show _stats _subsubtitle ,
"get_user_show_stats_subtitle_one" : get _user _show _stats _subtitle _one ,
"get_user_show_stats_subsubtitle_one" : get _user _show _stats _subsubtitle _one ,
"get_user_show_stats_subtitle_none" : get _user _show _stats _subtitle _none ,
"get_user_show_stats_subsubtitle_none" : get _user _show _stats _subsubtitle _none ,
"get_user_show_stats_top_show" : get _user _show _stats _top _show ,
"get_user_show_stats_top_show_plural" : get _user _show _stats _top _show _plural ,
"get_user_show_stats_spent_title" : get _user _show _stats _spent _title ,
"get_user_show_stats_most_played_title" : get _user _show _stats _most _played _title ,
"get_user_show_stats_most_played_subtitle" : get _user _show _stats _most _played _subtitle ,
"get_user_show_stats_buddy_title" : get _user _show _stats _buddy _title ,
"get_user_show_stats_buddy_subtitle" : get _user _show _stats _buddy _subtitle ,
"get_user_show_stats_buddy_title_none" : get _user _show _stats _buddy _title _none ,
"get_user_show_stats_buddy_subtitle_none" : get _user _show _stats _buddy _subtitle _none ,
"get_user_music_stats" : get _user _music _stats ,
"get_user_music_stats_title" : get _user _music _stats _title ,
"get_user_music_stats_subtitle" : get _user _music _stats _subtitle ,
"get_user_music_stats_subsubtitle" : get _user _music _stats _subsubtitle ,
"get_user_music_stats_subtitle_one" : get _user _music _stats _subtitle _one ,
"get_user_music_stats_subsubtitle_one" : get _user _music _stats _subsubtitle _one ,
"get_user_music_stats_subtitle_none" : get _user _music _stats _subtitle _none ,
"get_user_music_stats_subsubtitle_none" : get _user _music _stats _subsubtitle _none ,
"get_user_music_stats_top_track" : get _user _music _stats _top _track ,
"get_user_music_stats_top_track_plural" : get _user _music _stats _top _track _plural ,
"get_user_music_stats_top_album_plural" : get _user _music _stats _top _album _plural ,
"get_user_music_stats_top_artist_plural" : get _user _music _stats _top _artist _plural ,
"get_user_music_stats_spent_title" : get _user _music _stats _spent _title ,
"get_user_music_stats_spent_subtitle" : get _user _music _stats _spent _subtitle ,
"get_user_music_stats_oldest_album_title" : get _user _music _stats _oldest _album _title ,
"get_user_music_stats_oldest_album_subtitle" : get _user _music _stats _oldest _album _subtitle ,
"get_year_stats_title" : get _year _stats _title ,
"get_year_stats_subtitle" : get _year _stats _subtitle ,
"get_year_stats_subsubtitle" : get _year _stats _subsubtitle ,
"get_year_stats_movies" : get _year _stats _movies ,
"get_year_stats_movies_title" : get _year _stats _movies _title ,
"get_year_stats_movies_duration_title" : get _year _stats _movies _duration _title ,
"get_year_stats_shows" : get _year _stats _shows ,
"get_year_stats_shows_title" : get _year _stats _shows _title ,
"get_year_stats_shows_duration_title" : get _year _stats _shows _duration _title ,
"get_year_stats_music" : get _year _stats _music ,
"get_year_stats_music_title" : get _year _stats _music _title ,
"get_year_stats_music_duration_title" : get _year _stats _music _duration _title ,
"get_year_stats_leaderboard" : get _year _stats _leaderboard ,
"get_year_stats_leaderboard_title" : get _year _stats _leaderboard _title ,
"get_year_stats_duration_sum_title" : get _year _stats _duration _sum _title ,
"wrapperr_and" : wrapperr _and ,
"wrapperr_play" : wrapperr _play ,
"wrapperr_play_plural" : wrapperr _play _plural ,
"wrapperr_day" : wrapperr _day ,
"wrapperr_day_plural" : wrapperr _day _plural ,
"wrapperr_hour" : wrapperr _hour ,
"wrapperr_hour_plural" : wrapperr _hour _plural ,
"wrapperr_minute" : wrapperr _minute ,
"wrapperr_minute_plural" : wrapperr _minute _plural ,
"wrapperr_second" : wrapperr _second ,
"wrapperr_second_plural" : wrapperr _second _plural ,
"wrapperr_sort_plays" : wrapperr _sort _plays ,
"wrapperr_sort_duration" : wrapperr _sort _duration
}
} ;
var wrapperr _customization _data = JSON . stringify ( wrapperr _customization _form ) ;
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
alert ( 'Failed to parse API response.' ) ;
console . log ( 'Failed to parse API response. Response: ' + this . responseText ) ;
document . getElementById ( "set_wrapperr_customization_form_button" ) . disabled = false ;
document . getElementById ( "set_wrapperr_customization_form_button" ) . style . opacity = '1' ;
}
if ( result . error ) {
alert ( result . message ) ;
document . getElementById ( "set_wrapperr_customization_form_button" ) . disabled = false ;
document . getElementById ( "set_wrapperr_customization_form_button" ) . style . opacity = '1' ;
} else {
get _config ( get _cookie ( 'wrapperr-admin' ) ) ;
}
}
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , "../api/set_config.php" ) ;
xhttp . send ( wrapperr _customization _data ) ;
return ;
}
function caching _menu ( ) {
var html = '<div class="form-group newline">' ;
html += '<button class="form-control btn" name="admin_menu_return_button" id="admin_menu_return_button" onclick="get_config(get_cookie(\'wrapperr-admin\'));"><img src="../assets/trash.svg" class="btn_logo"></img><p2 id="admin_menu_return_button_text">Return</p2></button>' ;
html += '</div>' ;
html += '<div class="form-group newline">' ;
html += '<hr>' ;
html += '</div>' ;
html += `
< form id = 'stats_form' class = 'form' onsubmit = 'return false' action = "" method = "post" >
< div class = 'form-group newline' >
< h3 >
This site calls Wrapperr on a loop , caching Tautulli data for later .
< / h 3 >
< div class = "form_hidden" id = "caching_desc" >
< p style = "font-size:1em;" >
When you configured a wrapped period , it included the amount of days you want to analyze . Each unique day in that period is a new API request to Tautulli .
< br >
< br >
Wrapperr uses PHP , which has script run - time limits . This page allows you to reduce the number of days cached when Wrapperr is working , preventing the PHP script from running for more than the allowed runtime .
< br >
< br >
< / p >
< / d i v >
< div class = "form-group newline" >
< button class = "form-control btn" name = "get_user_show_stats_custom_button" id = "get_user_show_stats_custom_button" onclick = "toggle_hidden_form(\'caching_desc\')" > < img src = "../assets/about.svg" class = "btn_logo" > < / i m g > < p 2 i d = " g e t _ u s e r _ s h o w _ s t a t s _ c u s t o m _ b u t t o n _ t e x t " > I n f o < / p 2 > < / b u t t o n >
< / d i v >
< / d i v >
< div class = 'form-group newline' >
< label for = "days" title = "" > Days to cache each loop : < / l a b e l >
< input type = "number" class = 'form-control' name = "days" id = "days" minlenght = '1' value = '50' autocomplete = "off" required / >
< / d i v >
< div class = "form-group newline" >
< button class = "form-control btn" name = "cache_button" id = "cache_button" onclick = "cache_initiate();" > < img src = "../assets/download.svg" class = "btn_logo" > < / i m g > < p 2 i d = " c a c h e _ b u t t o n _ t e x t " > C a c h e < / p 2 > < / b u t t o n >
< / d i v >
< div id = "cache" > < / d i v >
< / f o r m >
` ;
document . getElementById ( "setup" ) . innerHTML = html ;
}
function cache _initiate ( ) {
var days = document . getElementById ( 'days' ) . value ;
var html = `
< form id = 'stats_form' class = 'form' onsubmit = 'return false' action = "" method = "post" >
< div class = 'form-group newline' >
< img id = "loading_icon" src = "../assets/loading.gif" style = "border-radius: 25px; background-color: white; padding: 1em; width: 4em; height: 4em; display: inline;" >
< / d i v >
< h3 > Caching log : < / h 3 >
< div id = "cache_results" style = "max-height: 15em; overflow-y: scroll;" >
< / d i v >
< / f o r m >
` ;
var today = new Date ( ) ;
var time = today . getHours ( ) + ":" + today . getMinutes ( ) + ":" + today . getSeconds ( ) + ' - ' ;
document . getElementById ( 'cache' ) . innerHTML = html ;
document . getElementById ( 'cache_results' ) . innerHTML += '<p style="color:white; font-size:0.75em;">' + time + 'Creating new cache request. Maximum ' + days + ' days.' + '</p>' ;
get _stats ( days ) ;
}
function cache _log ( days , result , complete ) {
var today = new Date ( ) ;
var time = today . getHours ( ) + ":" + today . getMinutes ( ) + ":" + today . getSeconds ( ) + ' - ' ;
if ( result ) {
document . getElementById ( 'cache_results' ) . innerHTML += '<p style="color:darkseagreen; font-size:0.75em;">' + time + 'Completed caching with a maxmimum of ' + days + ' days.' + '</p>' ;
} else {
document . getElementById ( 'cache_results' ) . innerHTML += '<p style="color:indianred; font-size:1em;"> ' + time + 'Error caching ' + days + ' days. Stopping.' + '</p>' ;
document . getElementById ( 'loading_icon' ) . style . display = "none" ;
document . getElementById ( "cache_button" ) . disabled = false ;
document . getElementById ( "cache_button" ) . style . opacity = '1' ;
}
if ( complete ) {
document . getElementById ( 'cache_results' ) . innerHTML += '<p style="color:darkseagreen; font-size:1em;">' + time + 'Finished caching request.' + '</p>' ;
document . getElementById ( 'loading_icon' ) . style . display = "none" ;
document . getElementById ( "cache_button" ) . disabled = false ;
document . getElementById ( "cache_button" ) . style . opacity = '1' ;
} else {
document . getElementById ( 'cache_results' ) . innerHTML += '<p style="color:white; font-size:0.75em;">' + time + 'Requesting new cache from Wrapperr. Maximum ' + days + ' days.' + '</p>' ;
}
var cache _results = document . getElementById ( "cache_results" ) ;
cache _results . scrollTop = cache _results . scrollHeight ;
}
function get _stats ( days ) {
document . getElementById ( "cache_button" ) . disabled = true ;
document . getElementById ( "cache_button" ) . style . opacity = '0.5' ;
stats _form = {
"cookie" : get _cookie ( 'wrapperr-admin' ) ,
"caching" : true ,
"cache_limit" : days
} ;
var stats _data = JSON . stringify ( stats _form ) ;
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
if ( this . responseText . includes ( 'Maximum execution time of' ) ) {
cache _log ( days , false , true ) ;
document . getElementById ( "cache_button" ) . disabled = false ;
document . getElementById ( "cache_button" ) . style . opacity = '1' ;
alert ( 'PHP runtime was exceeded and stopped execution. Lower days cached to prevent this.' ) ;
console . log ( 'Failed to parse API response. Error: ' + this . responseText ) ;
} else {
cache _log ( days , false , true ) ;
alert ( 'Failed to parse API response.' ) ;
console . log ( 'Failed to parse API response. Error: ' + this . responseText ) ;
document . getElementById ( "cache_button" ) . disabled = false ;
document . getElementById ( "cache_button" ) . style . opacity = '1' ;
}
return ;
}
if ( result . error ) {
alert ( result . message ) ;
cache _log ( days , false , true ) ;
} else {
if ( ! result . caching _complete ) {
cache _log ( days , true , result . caching _complete ) ;
get _stats ( days ) ;
} else {
cache _log ( days , true , result . caching _complete ) ;
}
}
}
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , root + "api/get_stats.php" , ) ;
xhttp . send ( stats _data ) ;
return ;
2021-03-08 18:45:06 +00:00
}
2021-03-12 22:45:44 +00:00
function test _tautulli _connection ( ) {
2021-12-12 16:31:15 +00:00
document . getElementById ( "test_connection" ) . disabled = true ;
document . getElementById ( "test_connection" ) . style . opacity = '0.5' ;
2021-03-12 22:45:44 +00:00
var button = document . getElementById ( 'test_connection' ) ;
button . style . backgroundColor = 'lightgrey' ;
2022-01-11 13:33:30 +00:00
https _temp = document . getElementById ( 'https' ) . checked ;
2021-03-12 22:45:44 +00:00
ip _temp = document . getElementById ( 'tautulli_ip' ) . value ;
root _temp = document . getElementById ( 'tautulli_root' ) . value ;
port _temp = document . getElementById ( 'tautulli_port' ) . value ;
api _temp = document . getElementById ( 'tautulli_apikey' ) . value ;
2022-01-11 13:33:30 +00:00
if ( https _temp ) {
2021-03-12 22:45:44 +00:00
var prefix = 'https://' ;
} else {
var prefix = 'http://' ;
}
if ( root _temp == "" ) {
var suffix = '' ;
} else {
var suffix = '/' + root _temp + '/' ;
}
if ( port _temp == "" ) {
url = prefix + ip _temp + suffix + '/api/v2' ;
} else {
url = prefix + ip _temp + ':' + port _temp + suffix + '/api/v2' ;
}
2022-01-11 13:33:30 +00:00
config _form = { "url" : url , "https" : https _temp , "apikey" : api _temp } ;
2021-03-12 22:45:44 +00:00
var config _data = JSON . stringify ( config _form ) ;
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
2022-01-11 13:33:30 +00:00
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
console . log ( 'Failed to parse API response. Response: ' + this . responseText )
alert ( 'Failed to parse API response.' ) ;
button . style . backgroundColor = 'var(--red)' ;
document . getElementById ( "test_connection" ) . disabled = false ;
document . getElementById ( "test_connection" ) . style . opacity = '1' ;
}
2021-03-12 22:45:44 +00:00
if ( ! result . error ) {
2022-01-11 13:33:30 +00:00
button . style . backgroundColor = 'var(--green)' ;
2021-12-12 16:31:15 +00:00
document . getElementById ( "test_connection" ) . disabled = false ;
document . getElementById ( "test_connection" ) . style . opacity = '1' ;
2021-03-12 22:45:44 +00:00
} else {
2022-01-11 13:33:30 +00:00
button . style . backgroundColor = 'var(--red)' ;
2021-12-12 16:31:15 +00:00
document . getElementById ( "test_connection" ) . disabled = false ;
document . getElementById ( "test_connection" ) . style . opacity = '1' ;
alert ( result . message ) ;
2021-03-12 22:45:44 +00:00
}
}
} ;
xhttp . withCredentials = true ;
2021-10-11 12:25:19 +00:00
xhttp . open ( "post" , root + 'api/get_connection.php' ) ;
2021-03-12 22:45:44 +00:00
xhttp . send ( config _data ) ;
}
2022-01-11 13:33:30 +00:00
function get _wrapper _version ( ) {
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
console . log ( 'Failed to parse Wrapperr version. Response: ' + this . responseText )
}
if ( ! result . error ) {
document . getElementById ( 'github_link' ) . innerHTML = 'GitHub (' + result . wrapperr _version + ')' ;
if ( result . application _name && result . application _name !== '' ) {
document . getElementById ( 'application_name' ) . innerHTML = result . application _name + ' Setup' ;
document . title = result . application _name ;
}
}
2021-03-08 18:45:06 +00:00
}
2022-01-11 13:33:30 +00:00
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , "../api/get_wrapperr_version.php" ) ;
xhttp . send ( ) ;
return ;
2021-10-17 11:47:58 +00:00
}
2021-12-12 16:31:15 +00:00
2022-01-11 13:33:30 +00:00
// Get admin configuration state
function get _admin _state ( ) {
2021-12-12 16:31:15 +00:00
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
2022-01-11 13:33:30 +00:00
console . log ( 'Failed to parse API response. Response: ' + this . responseText )
2021-12-12 16:31:15 +00:00
}
2022-01-11 13:33:30 +00:00
if ( result . error ) {
console . log ( result . message ) ;
} else if ( ! result . wrapperr _admin _configured ) {
first _time = true ;
set _password _form ( ) ;
} else {
cookie = get _cookie ( 'wrapperr-admin' ) ;
if ( cookie ) {
validate _cookie _admin ( cookie ) ;
} else {
login _menu ( ) ;
}
2021-12-12 16:31:15 +00:00
}
}
} ;
xhttp . withCredentials = true ;
2022-01-11 13:33:30 +00:00
xhttp . open ( "post" , "../api/get_admin_state.php" ) ;
2021-12-12 16:31:15 +00:00
xhttp . send ( ) ;
return ;
2022-01-11 13:33:30 +00:00
}
// Validate admin login
function validate _cookie _admin ( cookie ) {
var json _cookie = JSON . stringify ( { "cookie" : cookie } ) ;
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
try {
var result = JSON . parse ( this . responseText ) ;
} catch ( error ) {
console . log ( 'Failed to parse API response. Response: ' + this . responseText )
}
if ( result . error ) {
set _cookie ( "wrapperr-admin" , "" , 1 ) ;
login _menu ( ) ;
} else {
get _config ( get _cookie ( 'wrapperr-admin' ) ) ;
}
}
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , "../api/validate_login_admin_cookie.php" ) ;
xhttp . send ( json _cookie ) ;
return ;
}
// Get config for admin to configure
function get _config ( cookie ) {
config _form = {
"cookie" : cookie
} ;
var config _data = JSON . stringify ( config _form ) ;
var xhttp = new XMLHttpRequest ( ) ;
xhttp . onreadystatechange = function ( ) {
if ( this . readyState == 4 && this . status == 200 ) {
var result = JSON . parse ( this . responseText ) ;
if ( result . error ) {
alert ( result . message ) ;
location . reload ( ) ;
} else {
tautulli _apikey = result . data . tautulli _apikey ;
tautulli _ip = result . data . tautulli _ip ;
tautulli _port = result . data . tautulli _port ;
tautulli _length = result . data . tautulli _length ;
tautulli _root = result . data . tautulli _root ;
tautulli _libraries = result . data . tautulli _libraries ;
https = result . data . https ;
timezone = result . data . timezone ;
stats _intro = result . data . stats _intro ;
stats _outro = result . data . stats _outro ;
create _share _links = result . data . create _share _links ;
use _cache = result . data . use _cache ;
use _logs = result . data . use _logs ;
clientID = result . data . clientID ;
wrapperr _root = result . data . wrapperr _root ;
application _name _str = result . data . application _name ;
application _url _str = result . data . application _url ;
wrapped _start = new Date ( 0 ) ;
wrapped _start . setUTCSeconds ( result . data . wrapped _start ) ;
wrapped _end = new Date ( 0 ) ;
wrapped _end . setUTCSeconds ( result . data . wrapped _end ) ;
get _user _movie _stats = result . data . get _user _movie _stats ;
get _user _movie _stats _title = result . data . get _user _movie _stats _title ;
get _user _movie _stats _subtitle = result . data . get _user _movie _stats _subtitle ;
get _user _movie _stats _subsubtitle = result . data . get _user _movie _stats _subsubtitle ;
get _user _movie _stats _subtitle _one = result . data . get _user _movie _stats _subtitle _one ;
get _user _movie _stats _subsubtitle _one = result . data . get _user _movie _stats _subsubtitle _one ;
get _user _movie _stats _subtitle _none = result . data . get _user _movie _stats _subtitle _none ;
get _user _movie _stats _subsubtitle _none = result . data . get _user _movie _stats _subsubtitle _none ;
get _user _movie _stats _top _movie = result . data . get _user _movie _stats _top _movie ;
get _user _movie _stats _top _movie _plural = result . data . get _user _movie _stats _top _movie _plural ;
get _user _movie _stats _movie _completion _title = result . data . get _user _movie _stats _movie _completion _title ;
get _user _movie _stats _movie _completion _title _plural = result . data . get _user _movie _stats _movie _completion _title _plural ;
get _user _movie _stats _movie _completion _subtitle = result . data . get _user _movie _stats _movie _completion _subtitle ;
get _user _movie _stats _pause _title = result . data . get _user _movie _stats _pause _title ;
get _user _movie _stats _pause _subtitle = result . data . get _user _movie _stats _pause _subtitle ;
get _user _movie _stats _pause _title _one = result . data . get _user _movie _stats _pause _title _one ;
get _user _movie _stats _pause _subtitle _one = result . data . get _user _movie _stats _pause _subtitle _one ;
get _user _movie _stats _pause _title _none = result . data . get _user _movie _stats _pause _title _none ;
get _user _movie _stats _pause _subtitle _none = result . data . get _user _movie _stats _pause _subtitle _none ;
get _user _movie _stats _oldest _title = result . data . get _user _movie _stats _oldest _title ;
get _user _movie _stats _oldest _subtitle = result . data . get _user _movie _stats _oldest _subtitle ;
get _user _movie _stats _oldest _subtitle _pre _1950 = result . data . get _user _movie _stats _oldest _subtitle _pre _1950 ;
get _user _movie _stats _oldest _subtitle _pre _1975 = result . data . get _user _movie _stats _oldest _subtitle _pre _1975 ;
get _user _movie _stats _oldest _subtitle _pre _2000 = result . data . get _user _movie _stats _oldest _subtitle _pre _2000 ;
get _user _movie _stats _spent _title = result . data . get _user _movie _stats _spent _title ;
get _user _show _stats = result . data . get _user _show _stats ;
get _user _show _stats _buddy = result . data . get _user _show _stats _buddy ;
get _user _show _stats _title = result . data . get _user _show _stats _title ;
get _user _show _stats _subtitle = result . data . get _user _show _stats _subtitle ;
get _user _show _stats _subsubtitle = result . data . get _user _show _stats _subsubtitle ;
get _user _show _stats _subtitle _one = result . data . get _user _show _stats _subtitle _one ;
get _user _show _stats _subsubtitle _one = result . data . get _user _show _stats _subsubtitle _one ;
get _user _show _stats _subtitle _none = result . data . get _user _show _stats _subtitle _none ;
get _user _show _stats _subsubtitle _none = result . data . get _user _show _stats _subsubtitle _none ;
get _user _show _stats _top _show = result . data . get _user _show _stats _top _show ;
get _user _show _stats _top _show _plural = result . data . get _user _show _stats _top _show _plural ;
get _user _show _stats _spent _title = result . data . get _user _show _stats _spent _title ;
get _user _show _stats _most _played _title = result . data . get _user _show _stats _most _played _title ;
get _user _show _stats _most _played _subtitle = result . data . get _user _show _stats _most _played _subtitle ;
get _user _show _stats _buddy _title = result . data . get _user _show _stats _buddy _title ;
get _user _show _stats _buddy _subtitle = result . data . get _user _show _stats _buddy _subtitle ;
get _user _show _stats _buddy _title _none = result . data . get _user _show _stats _buddy _title _none ;
get _user _show _stats _buddy _subtitle _none = result . data . get _user _show _stats _buddy _subtitle _none ;
get _user _music _stats = result . data . get _user _music _stats ;
get _user _music _stats _title = result . data . get _user _music _stats _title ;
get _user _music _stats _subtitle = result . data . get _user _music _stats _subtitle ;
get _user _music _stats _subsubtitle = result . data . get _user _music _stats _subsubtitle ;
get _user _music _stats _subtitle _one = result . data . get _user _music _stats _subtitle _one ;
get _user _music _stats _subsubtitle _one = result . data . get _user _music _stats _subsubtitle _one ;
get _user _music _stats _subtitle _none = result . data . get _user _music _stats _subtitle _none ;
get _user _music _stats _subsubtitle _none = result . data . get _user _music _stats _subsubtitle _none ;
get _user _music _stats _top _track = result . data . get _user _music _stats _top _track ;
get _user _music _stats _top _track _plural = result . data . get _user _music _stats _top _track _plural ;
get _user _music _stats _top _album _plural = result . data . get _user _music _stats _top _album _plural ;
get _user _music _stats _top _artist _plural = result . data . get _user _music _stats _top _artist _plural ;
get _user _music _stats _spent _title = result . data . get _user _music _stats _spent _title ;
get _user _music _stats _spent _subtitle = result . data . get _user _music _stats _spent _subtitle ;
get _user _music _stats _oldest _album _title = result . data . get _user _music _stats _oldest _album _title ;
get _user _music _stats _oldest _album _subtitle = result . data . get _user _music _stats _oldest _album _subtitle ;
get _year _stats _title = result . data . get _year _stats _title ;
get _year _stats _subtitle = result . data . get _year _stats _subtitle ;
get _year _stats _subsubtitle = result . data . get _year _stats _subsubtitle ;
get _year _stats _movies = result . data . get _year _stats _movies ;
get _year _stats _movies _title = result . data . get _year _stats _movies _title ;
get _year _stats _movies _duration _title = result . data . get _year _stats _movies _duration _title ;
get _year _stats _shows = result . data . get _year _stats _shows ;
get _year _stats _shows _title = result . data . get _year _stats _shows _title ;
get _year _stats _shows _duration _title = result . data . get _year _stats _shows _duration _title ;
get _year _stats _music = result . data . get _year _stats _music ;
get _year _stats _music _title = result . data . get _year _stats _music _title ;
get _year _stats _music _duration _title = result . data . get _year _stats _music _duration _title ;
get _year _stats _leaderboard = result . data . get _year _stats _leaderboard ;
get _year _stats _leaderboard _title = result . data . get _year _stats _leaderboard _title ;
get _year _stats _duration _sum _title = result . data . get _year _stats _duration _sum _title ;
wrapperr _and = result . data . wrapperr _and ;
wrapperr _play = result . data . wrapperr _play ;
wrapperr _play _plural = result . data . wrapperr _play _plural ;
wrapperr _day = result . data . wrapperr _day ;
wrapperr _day _plural = result . data . wrapperr _day _plural ;
wrapperr _hour = result . data . wrapperr _hour ;
wrapperr _hour _plural = result . data . wrapperr _hour _plural ;
wrapperr _minute = result . data . wrapperr _minute ;
wrapperr _minute _plural = result . data . wrapperr _minute _plural ;
wrapperr _second = result . data . wrapperr _second ;
wrapperr _second _plural = result . data . wrapperr _second _plural ;
wrapperr _sort _plays = result . data . wrapperr _sort _plays ;
wrapperr _sort _duration = result . data . wrapperr _sort _duration ;
username = result . admin ;
admin _menu ( ) ;
}
}
} ;
xhttp . withCredentials = true ;
xhttp . open ( "post" , "../api/get_config.php" ) ;
xhttp . send ( config _data ) ;
2021-12-12 16:31:15 +00:00
}