IPC GUI Update Nr.10 (#858)

* Typo

* Include every line in commit

* Add tooltips to buttons

* Add "disconnected"-Bot Status Button in left sidebar

* Fix bug in totalTimeRemaining

* Misc

* Implement "GET, DELETE /Api/GamesToRedeemInBackground/{Bot}" Part1

* Misc

* Misc

* Misc

* Use modified adminlte.min.js

* Remove "expandOnHover" from left sidebar

* Fix

* Add build variant to footer

* Remove tooltips

* Change auto scroll icon

* Cleanup

* Add live search for dropdowns

* Misc

* Misc

* Add wiki parser for commands

* Misc

* Add nightmode support for new dropdowns

* Fix
This commit is contained in:
SKANKHUNTER
2018-07-31 20:43:27 +02:00
committed by Łukasz Domeradzki
parent 97f826b7e2
commit d10b60eadf
11 changed files with 262 additions and 207 deletions

File diff suppressed because one or more lines are too long

View File

@@ -102,8 +102,7 @@ button.bot-resumed:hover {
margin-right: 0px;
}
.info-overview {
pointer-events: none;
.info-overview {
cursor: default;
}
@@ -191,8 +190,11 @@ button.bot-resumed:hover {
height: 250px !important;
}
}
.sidebar-menu li.header {
text-transform: uppercase;
}
.lockscreen-image{left:-5px}
.lockscreen-image{
left:-5px
}

View File

@@ -52,7 +52,7 @@
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-sweetalert/1.0.1/sweetalert.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.2/js/adminlte.min.js"></script>
<script src="js/adminlte.min.js"></script>
<script>
$(function () {
'use strict';

1
ArchiSteamFarm/www/js/adminlte.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,6 @@
//#region Setup
const tmpIPCPassword = get('IPCPassword');
const tmpIPCPassword = get('IPCPassword'),
vGUI = '0.1';
if (tmpIPCPassword) {
$.ajaxSetup({
@@ -30,11 +31,12 @@ $.ajax({
url: '/Api/ASF',
type: 'GET',
success: function (data) {
var ver = data['Result'].Version,
verNr = ver.Major + '.' + ver.Minor + '.' + ver.Build + '.' + ver.Revision;
var v = data['Result'].Version,
vNr = v.Major + '.' + v.Minor + '.' + v.Build + '.' + v.Revision,
build = data['Result'].BuildVariant;
$('#version').text(verNr);
$('#changelog').attr('href', 'https://github.com/JustArchi/ArchiSteamFarm/releases/tag/' + verNr);
$('#version').text(vNr + ' - ' + build + ' - ' + vGUI);
$('#changelog').attr('href', 'https://github.com/JustArchi/ArchiSteamFarm/releases/tag/' + vNr);
}
});
//#endregion Footer
@@ -42,6 +44,7 @@ $.ajax({
//#region Bot Status Buttons
function displayBotStatus() {
var offline = 0,
disconnected = 0,
online = 0,
farming = 0;
@@ -54,13 +57,18 @@ function displayBotStatus() {
for (var i = 0; i < json.length; i++) {
var obj = json[i],
KeepRunning = obj.KeepRunning,
TimeRemaining = obj.CardsFarmer.TimeRemaining;
TimeRemaining = obj.CardsFarmer.TimeRemaining,
SteamID = obj.SteamID;
if (KeepRunning === false) {
offline++;
} else {
if (TimeRemaining === '00:00:00') {
online++;
if (SteamID === 0) {
disconnected++;
} else {
online++;
}
} else {
farming++;
}
@@ -68,6 +76,12 @@ function displayBotStatus() {
}
$('#offlineBots').text(offline);
if (disconnected > 0) {
$('#disconnectedBots').show();
$('#disconnectedBots').text(disconnected);
} else {
$('#disconnectedBots').hide();
}
$('#onlineBots').text(online);
$('#farmingBots').text(farming);
}
@@ -129,8 +143,6 @@ window.setInterval(function () { displayUptime(); }, 60000);
//#region Commands Page
var $cmdInput = $('#commandInput');
function fillCommand(cmd) { $cmdInput.val(cmd + ' '); }
function fillBots(bot) { $cmdInput.val($cmdInput.val() + bot); }
function getDateAndTime() {
var date = new Date();
@@ -228,7 +240,7 @@ function generateConfigHTML(mode) {
switch (value) {
case 'System.Boolean':
checkBoxes += '<div class="">'
+ '<button title="Toggle ' + key + '" type="button" data-type="' + value + '" class="btn btn-box-tool text-grey" id="' + key + '">'
+ '<button type="button" data-type="' + value + '" class="btn btn-box-tool text-grey" id="' + key + '">'
+ '<i id="ico' + key + '" class="fas fa-toggle-on fa-2x fa-fw fa-rotate-180" ></i ></button>'
+ readableKey
+ '</div>';
@@ -852,17 +864,19 @@ $(function () {
src: '../img/flags/' + tmpLangCode + '.gif'
});
//rework this whole part (add saving "never show again")
//fix translation not working
if (tmpLangMissing > 0) {
var percentage = (tmpLangMissing * 100 / tmpLangTotal).toFixed(0),
//infoText = $.i18n('global-language-info', percentage); //Fix this
infoText = percentage + "% of this language is not translated!";
$('#languageInfo').html('<div class="alert alert-warning alert-dismissible">'
+ '<button data-i18n="title-global-never" title="Never show again" type="button" class="close" data-dismiss="alert" aria-hidden="true">x</button>'
//+ '<button title="Never show again" type="button" class="close" data-dismiss="alert" aria-hidden="true">x</button>'
+ infoText
+ '</div>');
} else {
$('#languageInfo').text('');
}
}
$('#languages').collapse('hide');
}
@@ -919,7 +933,7 @@ $(function () {
// Boxed Layout
+ '<div class="form-group hidden-xs hidden-sm">'
+ '<label class="control-sidebar-subheading">'
+ '<button data-i18n="title-global-boxed" title="Toggle boxed layout" type="button" class="btn btn-box-tool pull-right text-grey" id="toggleBoxed"><i id="iconBoxed" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button>'
+ '<button type="button" class="btn btn-box-tool pull-right text-grey" id="toggleBoxed"><i id="iconBoxed" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button>'
+ '<i class="far fa-square fa-fw"></i> <span data-i18n="global-boxed">Boxed Layout</span>'
+ '</label>'
+ '<p data-i18n="global-boxed-description">Toggle the boxed layout</p>'
@@ -927,7 +941,7 @@ $(function () {
// Nightmode
+ '<div class="form-group">'
+ '<label class="control-sidebar-subheading">'
+ '<button data-i18n="title-global-nightmode" title="Toggle nightmode" type="button" class="btn btn-box-tool pull-right text-grey" id="toggleNightmode"><i id="iconNightmode" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button>'
+ '<button type="button" class="btn btn-box-tool pull-right text-grey" id="toggleNightmode"><i id="iconNightmode" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button>'
+ '<i class="fas fa-moon fa-fw"></i> <span data-i18n="global-nightmode">Nightmode</span>'
+ '</label>'
+ '<p data-i18n="global-nightmode-description">Toggle the nightmode</p>'
@@ -969,14 +983,14 @@ $(function () {
var language = availableLanguages[i],
langCode = (language === 'strings') ? 'us' : language.substr(language.length - 2).toLowerCase();
$languagesList.append('<button data-i18n="title-global-language" title="Change language" type="button" class="btn btn-box-tool language" data-locale="' + language + '"><img src="../img/flags/' + langCode + '.gif" alt="' + langCode + '"></button>');
$languagesList.append('<button type="button" class="btn btn-box-tool language" data-locale="' + language + '"><img src="../img/flags/' + langCode + '.gif" alt="' + langCode + '"></button>');
}
$layoutSettings.append('<h4 class="control-sidebar-heading" data-i18n="global-language">Language</h4>'
+ '<div id="languageInfo"></div>'
+ '<div class="form-group">'
+ '<label class="control-sidebar-subheading">'
+ '<button data-i18n="title-global-language" title="Change language" type="button" class="btn btn-box-tool pull-right" data-toggle="collapse" data-target="#languages"><span data-i18n="global-change">Change</span> <i class="fas fa-caret-down"></i></button>'
+ '<button type="button" class="btn btn-box-tool pull-right" data-toggle="collapse" data-target="#languages"><span data-i18n="global-change-language">Change language</span> <i class="fas fa-caret-down"></i></button>'
+ '<img id="currentLanguage" src="../img/flags/us.gif" alt="us">'
+ '</label>'
+ '</div>'

View File

@@ -22,8 +22,10 @@
"bots-pause-success": "<$1> has been paused.",
"bots-recover-files": "You will not be able to recover any bot files!",
"bots-redeem-button": "Add keys!",
"bots-redeem-confirm": "$1 {{PLURAL:$1|Key|Keys}} have been added to <$2> background redeemer.",
"bots-redeem-title": "Enter keys!",
"bots-redeem-confirm": "$1 {{PLURAL:$1|Key has|Keys have}} been added to <$2> background redeemer.",
"bots-redeem-title": "Background games redeemer",
"bots-redeem-add-title": "Add keys",
"bots-redeem-view-title": "View keys",
"bots-resume-success": "<$1> has been resumed.",
"bots-simple": "Simple farming info",
"bots-start-success": "<$1> has been started.",
@@ -52,7 +54,7 @@
"global-bots": "Bots",
"global-boxed": "Boxed Layout",
"global-boxed-description": "Toggle the boxed layout",
"global-change": "Change",
"global-change-language": "Change language",
"global-changelog": "Changelog",
"global-commands": "Commands",
"global-config": "Config",
@@ -82,23 +84,6 @@
"placeholder-auth": "Type your password...",
"placeholder-commands": "Type command...",
"placeholder-generator": "Name",
"title-bots-delete": "Toggle delete button",
"title-bots-delete-this": "Delete this bot",
"title-bots-games": "Add keys to GamesToRedeemInBackground",
"title-bots-key": "Toggle key button",
"title-bots-more": "Show more infos",
"title-bots-offline": "Toggle offline bots",
"title-bots-inactive": "Toggle inactive bots",
"title-bots-online": "Toggle online bots",
"title-bots-refresh": "Refresh content",
"title-bots-simple": "Toggle simple farming info",
"title-commands-auto-clear": "Toggle auto clear",
"title-commands-send": "Send command",
"title-commands-show-all-bots": "Show all bots",
"title-commands-show-all-commands": "Show all commands",
"title-global-boxed": "Toggle boxed layout",
"title-global-language": "Change language",
"title-global-never": "Never show again",
"title-global-nightmode": "Toggle nightmode",
"title-log-auto-scroll": "Toggle auto scroll"
"title-commands": "Commands",
"title-bots": "Bots"
}

View File

@@ -53,6 +53,7 @@
<i class="fas fa-users fa-fw"></i> <span data-i18n="global-bots">Bots</span>
<span class="pull-right-container bot-status">
<small class="label pull-right bg-gray" id="offlineBots">0</small>
<small class="label pull-right bg-red" id="disconnectedBots" style="display:none;">0</small>
<small class="label pull-right bg-yellow" id="onlineBots">0</small>
<small class="label pull-right bg-olive" id="farmingBots">0</small>
</span>
@@ -65,16 +66,16 @@
<li><a href="generator.html"><i class="far fa-copy fa-fw"></i> <span data-i18n="global-generator">Generator</span></a></li>
<li class="header" data-i18n="global-information">Information</li>
<li class="info-overview">
<a>
<li>
<a class="info-overview" href="javascript:void(0)">
<i class="fas fa-tachometer-alt fa-fw"></i> <span data-i18n="global-ram-usage">RAM Usage</span>
<span class="pull-right-container">
<small class="label pull-right bg-blue" id="ramUsage">0.00 MB</small>
</span>
</a>
</li>
<li class="info-overview">
<a>
<li>
<a class="info-overview" href="javascript:void(0)">
<i class="far fa-clock fa-fw"></i> <span data-i18n="global-uptime">Uptime</span>
<span class="pull-right-container">
<small class="label pull-right bg-blue" id="uptime">0d 0h 0m</small>
@@ -110,20 +111,20 @@
<span data-i18n="bots-hide">Hide bots</span> <span class="fas fa-caret-down"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li><button data-i18n="title-bots-online" title="Toggle online bots" type="button" class="btn btn-box-tool text-grey" id="chkHideOnlineBots"><i id="iconHideOnlineBots" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-hide-online">Online bots</span></li>
<li><button data-i18n="title-bots-inactive" title="Toggle inactive bots" type="button" class="btn btn-box-tool text-grey" id="chkHideInactiveBots"><i id="iconHideInactiveBots" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-hide-inactive">Inactive bots</span></li>
<li><button data-i18n="title-bots-offline" title="Toggle offline bots" type="button" class="btn btn-box-tool text-grey" id="chkHideOfflineBots"><i id="iconHideOfflineBots" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-hide-offline">Offline bots</span></li>
<li><button type="button" class="btn btn-box-tool text-grey" id="chkHideOnlineBots"><i id="iconHideOnlineBots" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-hide-online">Online bots</span></li>
<li><button type="button" class="btn btn-box-tool text-grey" id="chkHideInactiveBots"><i id="iconHideInactiveBots" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-hide-inactive">Inactive bots</span></li>
<li><button type="button" class="btn btn-box-tool text-grey" id="chkHideOfflineBots"><i id="iconHideOfflineBots" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-hide-offline">Offline bots</span></li>
</ul>
</div>
<button data-i18n="title-bots-refresh" title="Refresh content" type="button" class="btn btn-box-tool" id="btnRefreshContent"><i class="fas fa-sync"></i></button>
<button type="button" class="btn btn-box-tool" id="btnRefreshContent"><i class="fas fa-sync"></i></button>
<div class="btn-group">
<button type="button" class="btn btn-box-tool dropdown-toggle" data-toggle="dropdown">
<i class="fas fa-wrench"></i>
</button>
<ul class="dropdown-menu" role="menu">
<li><button data-i18n="title-bots-key" title="Toggle key button" type="button" class="btn btn-box-tool text-grey" id="chkShowKeyButton"><i id="iconShowKeyButton" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-key">Show key button</span></li>
<li><button data-i18n="title-bots-delete" title="Toggle delete button" type="button" class="btn btn-box-tool text-grey" id="chkShowDeleteButton"><i id="iconShowDeleteButton" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-delete">Show delete button</span></li>
<li><button data-i18n="title-bots-simple" title="Toggle simple farming info" type="button" class="btn btn-box-tool text-grey" id="chkSimpleFarmingInfo"><i id="iconSimpleFarmingInfo" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-simple">Simple farming info</span></li>
<li><button type="button" class="btn btn-box-tool text-grey" id="chkShowKeyButton"><i id="iconShowKeyButton" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-key">Show key button</span></li>
<li><button type="button" class="btn btn-box-tool text-grey" id="chkShowDeleteButton"><i id="iconShowDeleteButton" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-delete">Show delete button</span></li>
<li><button type="button" class="btn btn-box-tool text-grey" id="chkSimpleFarmingInfo"><i id="iconSimpleFarmingInfo" class="fas fa-toggle-on fa-2x fa-rotate-180"></i></button><span data-i18n="bots-simple">Simple farming info</span></li>
</ul>
</div>
</div>
@@ -156,7 +157,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-sweetalert/1.0.1/sweetalert.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.2/js/adminlte.min.js"></script>
<script src="../js/adminlte.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/humanize-duration/3.12.1/humanize-duration.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
@@ -382,14 +383,14 @@
var json = data['Result'],
steamAvatarBaseURL = 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/',
steamAvatarDefault = 'fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb.jpg',
steamGameBaseURL = 'http://cdn.edgecast.steamstatic.com/steam/apps/',
steamGameBaseURL = 'https://steamcdn-a.akamaihd.net/steam/apps/',
totalGamesRemaining = 0,
totalTimeRemaining = '00:00:00',
totalTimeRemaining = 0,
totalCardsRemaining = 0,
farmingIsActive = false;
var deleteBotHTML = tmpShowDeleteButton === 'true' ? '<button data-i18n="title-bots-delete-this" title="Delete this bot" type="button" class="btn btn-box-tool" data-command="deleteBot"><i class="far fa-trash-alt"></i></button>' : '';
var redeemGamesHTML = tmpShowKeyButton === 'true' ? '<button data-i18n="title-bots-games" title="Add keys to GamesToRedeemInBackground" type="button" class="btn btn-box-tool" data-command="redeemGames"><i class="fas fa-key"></i></button>' : '';
var deleteBotHTML = tmpShowDeleteButton === 'true' ? '<button type="button" class="btn btn-box-tool" data-command="deleteBot"><i class="far fa-trash-alt"></i></button>' : '';
var redeemGamesHTML = tmpShowKeyButton === 'true' ? '<button type="button" class="btn btn-box-tool" data-command="redeemGames"><i class="fas fa-key"></i></button>' : '';
for (var i = 0; i < json.length; i++) {
var obj = json[i],
@@ -420,13 +421,13 @@
if (KeepRunning === false) { // Bot is offline
if (tmpHideOfflineBots === 'true') continue;
boxColorHTML = 'box-gray';
startOrStopHTML = '<button title="Start <' + BotName + '>" type="button" class="btn btn-box-tool bot-stopped" data-command="startBot"><i class="fas fa-power-off"></i></button>';
startOrStopHTML = '<button type="button" class="btn btn-box-tool bot-stopped" data-command="startBot"><i class="fas fa-power-off"></i></button>';
} else { // Bot is online
if (tmpHideOnlineBots === 'true') continue;
boxColorHTML = 'box-warning';
startOrStopHTML = '<button title="Stop <' + BotName + '>" type="button" class="btn btn-box-tool bot-started" data-command="stopBot"><i class="fas fa-power-off"></i></button>';
startOrStopHTML = '<button type="button" class="btn btn-box-tool bot-started" data-command="stopBot"><i class="fas fa-power-off"></i></button>';
var TimeRemaining = obj.CardsFarmer.TimeRemaining;
var TimeRemaining = moment.duration(obj.CardsFarmer.TimeRemaining).asMilliseconds();
if (SteamID === 0) { // Bot is not connected to steam
boxColorHTML = 'box-danger';
@@ -435,7 +436,7 @@
+ '<img src="' + avatarHTML + '">'
+ '</a>';
if (TimeRemaining !== '00:00:00') { // Bot is farming
if (TimeRemaining !== 0) { // Bot is farming
var GamesToFarm = obj.CardsFarmer.GamesToFarm,
CurrentGamesFarming = obj.CardsFarmer.CurrentGamesFarming,
allGamesFarmingAppID = [],
@@ -459,7 +460,7 @@
totalGamesRemaining += GamesToFarm.length;
expandBoxHTML = '<button data-i18n="title-bots-more" title="Show more infos" type="button" class="btn btn-box-tool" data-widget="collapse" id="collapse-trigger"><i class="fas fa-plus"></i></button>'
expandBoxHTML = '<button type="button" class="btn btn-box-tool" data-widget="collapse" id="collapse-trigger"><i class="fas fa-plus"></i></button>'
if (IsPlayingPossible) {
if (Paused) {
@@ -487,9 +488,7 @@
allGamesHTML = '<p class="text-center no-margin">' + $.i18n('bots-in-use') + '</p>';
}
TimeRemaining = moment.duration(TimeRemaining).asMilliseconds();
boxBodyHTML = '<div class="box-body" id="' + BotName + '" style="display: none;">'
boxBodyHTML = '<div class="box-body" id="' + BotName + '" style="display:none;">'
+ '<div class="row">'
+ '<div class="col-lg-8 col-md-8 col-sm-8 col-xs-8">'
+ '<span class="pull-left"><i class="far fa-clock"></i> ' + humanizeDuration(TimeRemaining) + '</span>'
@@ -506,15 +505,15 @@
}
if (Paused) {
pauseOrResumeHTML = '<button title="Resume <' + BotName + '>" type="button" class="btn btn-box-tool bot-paused" data-command="resumeBot"><i class="fas fa-pause"></i></button>';
pauseOrResumeHTML = '<button type="button" class="btn btn-box-tool bot-paused" data-command="resumeBot"><i class="fas fa-pause"></i></button>';
} else {
pauseOrResumeHTML = '<button title="Pause <' + BotName + '>" type="button" class="btn btn-box-tool bot-resumed" data-command="pauseBot"><i class="fas fa-pause"></i></button>';
pauseOrResumeHTML = '<button type="button" class="btn btn-box-tool bot-resumed" data-command="pauseBot"><i class="fas fa-pause"></i></button>';
}
}
$('#botRow').append('<div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">'
+ '<div class="box ' + boxColorHTML + ' collapsed-box" id="bot-box-' + BotName + '">'
+ '<div class="box-header with-border botHeader ui-widget-content">'
+ '<div class="box-header with-border botHeader">'
+ profileHTML
+ '<h3 class="box-title botTitle">' + BotName + '</h3>'
+ '<div class="box-tools pull-right botTools" id="' + BotName + '">'
@@ -524,8 +523,8 @@
+ deleteBotHTML
+ expandBoxHTML
+ '</div>'
+ boxBodyHTML
+ '</div>'
+ boxBodyHTML
+ '</div>'
+ '</div>');
@@ -659,14 +658,33 @@
break;
case 'redeemGames':
var bgrHTML = '<div class="nav-tabs-custom">'
+ '<ul class="nav nav-tabs nav-justified">'
+ '<li class="active"><a href="#addKeys" data-toggle="tab" aria-expanded="true">' + $.i18n('bots-redeem-add-title') + '</a></li>'
+ '<li class=""><a href="#viewKeys" data-toggle="tab" aria-expanded="false">' + $.i18n('bots-redeem-view-title') + '</a></li>'
+ '</ul>'
+ '<div class="tab-content">'
+ '<div class="tab-pane active" id="addKeys">'
+ '<p class="lead text-muted" style="display: block;">' + $.i18n('bots-syntax') + '</p>'
+ '<textarea id="gamesToRedeemInBackground"></textarea>'
+ '<div class="input-group">'
+ '<span class="input-group-addon" id="delimiter-text">' + $.i18n('bots-delimiter') + '</span>'
+ '<input type="text" class="form-control" id="delimiter" value="' + tmpDelimiter + '" aria-describedby="delimiter-text">'
+ '</div>'
+ '</div>'
+ '<div class="tab-pane" id="viewKeys">'
+ '<div class="alert alert-warning">'
+ '<h4><i class="fas fa-info-circle"></i> Not implemented</h4>'
+ 'This feature is currently being developed.'
+ '</div>'
+ '<textarea id="gamesToRedeemInBackground"></textarea>' //rename id
+ '</div>'
+ '</div>'
+ '</div>';
swal({
title: $.i18n('bots-redeem-title'),
text: '<p class="lead text-muted" style="display: block;">' + $.i18n('bots-syntax') + '</p>'
+ '<textarea id="gamesToRedeemInBackground"></textarea>'
+ '<div class="input-group">'
+ '<span class="input-group-addon" id="delimiter-text">' + $.i18n('bots-delimiter') + '</span>'
+ '<input type="text" class="form-control" id="delimiter" value="' + tmpDelimiter + '" aria-describedby="delimiter-text">'
+ '</div>',
text: bgrHTML,
html: true,
customClass: 'swal-wide',
showCancelButton: true,
@@ -725,6 +743,17 @@
$('.overlay').remove();
});
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var target = $(e.target).attr("href")
if (target === '#viewKeys') {
//load unused keys here
$(".confirm").text('Copy unused keys!');
} else {
$(".confirm").text('Add keys!');
}
});
break;
}
})
@@ -759,8 +788,6 @@
+ '</div>'
+ '</div>');
totalTimeRemaining = moment.duration(totalTimeRemaining).asMilliseconds();
$('#totalGamesRemaining').text(totalGamesRemaining);
$('#totalTimeRemaining').text(humanizeDuration(totalTimeRemaining));
$('#totalCardsRemaining').text(totalCardsRemaining);

View File

@@ -12,6 +12,7 @@
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-sweetalert/1.0.1/sweetalert.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.2/css/AdminLTE.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/css/bootstrap-select.min.css">
<link rel="stylesheet" href="../css/_all-skins.min.css">
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/_nightmode.min.css">
@@ -52,6 +53,7 @@
<i class="fas fa-users fa-fw"></i> <span data-i18n="global-bots">Bots</span>
<span class="pull-right-container bot-status">
<small class="label pull-right bg-gray" id="offlineBots">0</small>
<small class="label pull-right bg-red" id="disconnectedBots" style="display:none;">0</small>
<small class="label pull-right bg-yellow" id="onlineBots">0</small>
<small class="label pull-right bg-olive" id="farmingBots">0</small>
</span>
@@ -64,16 +66,16 @@
<li><a href="generator.html"><i class="far fa-copy fa-fw"></i> <span data-i18n="global-generator">Generator</span></a></li>
<li class="header" data-i18n="global-information">Information</li>
<li class="info-overview">
<a>
<li>
<a class="info-overview" href="javascript:void(0)">
<i class="fas fa-tachometer-alt fa-fw"></i> <span data-i18n="global-ram-usage">RAM Usage</span>
<span class="pull-right-container">
<small class="label pull-right bg-blue" id="ramUsage">0.00 MB</small>
</span>
</a>
</li>
<li class="info-overview">
<a>
<li>
<a class="info-overview" href="javascript:void(0)">
<i class="far fa-clock fa-fw"></i> <span data-i18n="global-uptime">Uptime</span>
<span class="pull-right-container">
<small class="label pull-right bg-blue" id="uptime">0d 0h 0m</small>
@@ -109,34 +111,26 @@
<i class="fas fa-wrench"></i>
</button>
<ul class="dropdown-menu" role="menu">
<li><button data-i18n="title-commands-auto-clear" title="Toggle auto clear" type="button" class="btn btn-box-tool text-olive" id="chkAutoClear"><i id="iconAutoClear" class="fas fa-toggle-on fa-2x"></i></button><span data-i18n="commands-auto-clear">Auto clear</span></li>
<li><button type="button" class="btn btn-box-tool text-olive" id="chkAutoClear"><i id="iconAutoClear" class="fas fa-toggle-on fa-2x"></i></button><span data-i18n="commands-auto-clear">Auto clear</span></li>
</ul>
</div>
</div>
</div>
<div class="box-body">
<div class="box-content-commands"></div>
<input type="text" class="form-control" id="commandSent" disabled>
<input id="commandSent" type="text" class="form-control" disabled>
</div>
<div class="box-footer">
<div class="input-group">
<div class="input-group-btn hidden-xs" id="cmdsDropDownBox">
<button data-i18n="title-commands-show-all-commands" title="Show all commands" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span data-i18n="global-commands">Commands</span>
<span class="fas fa-caret-down" id="iconCmdsDropDownBox"></span>
</button>
<ul class="dropdown-menu scrollable-menu" id="commandsDropDown"></ul>
</div>
<div class="input-group-btn hidden-xs" id="botsDropDownBox">
<button data-i18n="title-commands-show-all-bots" title="Show all bots" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span data-i18n="global-bots">Bots</span>
<span class="fas fa-caret-down" id="iconBotsDropDownBox"></span>
</button>
<ul class="dropdown-menu scrollable-menu" id="botsDropDown"></ul>
</div>
<input id="commandInput" type="text" class="form-control" data-i18n="placeholder-commands" placeholder="Type command...">
<div class="input-group-btn">
<button data-i18n="title-commands-send" title="Send command" type="button" class="btn btn-default" id="sendCommand"><i class="far fa-paper-plane"></i></button>
<div id="commandsDropDownBox" class="input-group-btn hidden-xs">
<select id="commandsDropDown" class="form-control selectpicker" data-dropup-auto="false" data-size="7" data-live-search="true" data-i18n="title-commands" title="Commands"></select>
</div>
<div class="input-group-btn hidden-xs">
<select id="botsDropDown" class="form-control selectpicker" data-dropup-auto="false" data-size="7" data-live-search="true" data-i18n="title-bots" title="Bots"></select>
</div>
<input id="commandInput" type="text" class="form-control" data-i18n="placeholder-commands" placeholder="Type command...">
<div class="input-group-btn">
<button type="button" class="btn btn-default" id="sendCommand"><i class="far fa-paper-plane"></i></button>
</div>
</div>
</div>
@@ -167,7 +161,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/interact.js/1.2.9/interact.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-sweetalert/1.0.1/sweetalert.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.2/js/adminlte.min.js"></script>
<script src="../js/adminlte.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.messagestore.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.fallbacks.min.js"></script>
@@ -175,6 +169,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.parser.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.emitter.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.emitter.bidi.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/js/bootstrap-select.min.js"></script>
<script src="../js/utils.js"></script>
<script src="../js/i18n.js"></script>
<script src="../js/app.js"></script>
@@ -186,24 +181,8 @@
var $chkAutoClear = $('#chkAutoClear'),
$commandInput = $('#commandInput'),
$cmdsDropDownBox = $('#cmdsDropDownBox'),
$botsDropDownBox = $('#botsDropDownBox'),
$botsDropDown = $("#botsDropDown"),
$commandsDropDown = $("#commandsDropDown");
var myCommands = { // For the future: Make this dynamic
'addlicense': 'Activates given appIDs (Steam Network) or subIDs (Steam Store) on given bot instances (free games only).',
'redeem': 'Redeems given cd-keys on given bot instances.',
'2faok': 'Accepts all pending 2FA confirmations for given bot instances.',
'2fa': 'Generates temporary 2FA token for given bot instances.',
'loot': 'Sends all MatchableTypes items of given bot instances to Master user defined in their SteamUserPermissions (with lowest steamID if more than one).',
'play': 'Switches to manual farming - launches given AppIDs on given bot instances, optionally also with custom GameName. Use !resume for returning to automatic farming.',
'start': 'Starts given bot instances.',
'stop': 'Stops given bot instances.',
'pause': 'Permanently pauses automatic cards farming module of given bot instances. ASF will not attempt to farm current account in this session, unless you manually !resume it, or restart the process. Also called sticky pause.',
'resume': 'Resumes automatic farming of given bot instances. Also see !pause, !play.',
'restart': 'Restarts ASF process.'
};
var keyCount = 0,
prevCommand = (JSON.parse(get('prevCommand')) === null) ? [] : JSON.parse(get('prevCommand'));
@@ -220,12 +199,37 @@
prevCommand.push(cmd);
}
store('prevCommand', JSON.stringify(prevCommand.slice(-20))); // Only save the last 20 commands
store('prevCommand', JSON.stringify(prevCommand.slice(-20)));
prevCommand = (JSON.parse(get('prevCommand')) === null) ? [] : JSON.parse(get('prevCommand'));
sendCommand();
e.preventDefault();
});
$commandsDropDown.on('changed.bs.select', function (e) {
$cmdInput.val($commandsDropDown.val() + ' ');
var elements = document.getElementById("commandsDropDown").options; // dirty... find a better solution
for(var i = 0; i < elements.length; i++){
elements[i].selected = false;
}
$commandsDropDown.selectpicker('render');
});
$botsDropDown.on('changed.bs.select', function (e) {
var bot = $botsDropDown.val(),
oldText = $cmdInput.val();
$cmdInput.val(oldText + bot);
var elements = document.getElementById("botsDropDown").options; // dirty... find a better solution
for(var i = 0; i < elements.length; i++){
elements[i].selected = false;
}
$botsDropDown.selectpicker('render');
});
//#region Merge to one function
$(document).keydown(function (e) {
@@ -284,19 +288,16 @@
$('.box-content-commands').css('height', tmpCommandHeight + 'px');
if (shouldDropUp()) {
$cmdsDropDownBox.addClass('dropup');
$botsDropDownBox.addClass('dropup');
$('#iconCmdsDropDownBox').removeClass('fa-caret-down');
$('#iconCmdsDropDownBox').addClass('fa-caret-up');
$('#iconBotsDropDownBox').removeClass('fa-caret-down');
$('#iconBotsDropDownBox').addClass('fa-caret-up');
$commandsDropDown.addClass('dropup');
$botsDropDown.addClass('dropup');
$commandsDropDown.selectpicker('refresh');
$botsDropDown.selectpicker('refresh');
} else {
$cmdsDropDownBox.removeClass('dropup');
$botsDropDownBox.removeClass('dropup');
$('#iconCmdsDropDownBox').removeClass('fa-caret-up');
$('#iconCmdsDropDownBox').addClass('fa-caret-down');
$('#iconBotsDropDownBox').removeClass('fa-caret-up');
$('#iconBotsDropDownBox').addClass('fa-caret-down');
$commandsDropDown.removeClass('dropup');
$botsDropDown.removeClass('dropup');
$('.bootstrap-select').removeClass('dropup');
$commandsDropDown.selectpicker('refresh');
$botsDropDown.selectpicker('refresh');
}
} else {
$('.box-content-commands').css('height', 400 + 'px');
@@ -321,59 +322,105 @@
store('commandHeight', currentHeight);
if (shouldDropUp()) {
$cmdsDropDownBox.addClass('dropup');
$botsDropDownBox.addClass('dropup');
$('#iconCmdsDropDownBox').removeClass('fa-caret-down');
$('#iconCmdsDropDownBox').addClass('fa-caret-up');
$('#iconBotsDropDownBox').removeClass('fa-caret-down');
$('#iconBotsDropDownBox').addClass('fa-caret-up');
$commandsDropDown.addClass('dropup');
$botsDropDown.addClass('dropup');
$commandsDropDown.selectpicker('refresh');
$botsDropDown.selectpicker('refresh');
} else {
$cmdsDropDownBox.removeClass('dropup');
$botsDropDownBox.removeClass('dropup');
$('#iconCmdsDropDownBox').removeClass('fa-caret-up');
$('#iconCmdsDropDownBox').addClass('fa-caret-down');
$('#iconBotsDropDownBox').removeClass('fa-caret-up');
$('#iconBotsDropDownBox').addClass('fa-caret-down');
$commandsDropDown.removeClass('dropup');
$botsDropDown.removeClass('dropup');
$('.bootstrap-select').removeClass('dropup');
$commandsDropDown.selectpicker('refresh');
$botsDropDown.selectpicker('refresh');
}
});
$('.box-footer').ready(function () {
for (var cmd in myCommands) { // Fill drop down with all commands
if (myCommands.hasOwnProperty(cmd)) {
$commandsDropDown.append('<li><a href="javascript:void(0)" id="' + cmd + '" onclick="fillCommand(\'' + cmd + '\')">' + cmd + '</a></li>');
var cachedCommands = get('cachedCommands'),
cachedDate = get('cachedCommandsDate'),
today = new Date().toLocaleDateString();
if (cachedCommands && today == cachedDate) {
var myCommands = cachedCommands.split(',');
for (var i = 0; i < myCommands.length; i++) {
$commandsDropDown.append('<option title="Commands">' + myCommands[i] + '</option>');
}
$('.overlay').remove();
$commandsDropDown.selectpicker('refresh');
} else {
$('#commandsDropDownBox').append('<div class="overlay bot-box-loading"><i class="fas fa-sync fa-spin"></i></div>');
$.ajax({
url: '/Api/WWW/Send',
type: 'POST',
data: JSON.stringify({ "URL": "https://github.com/JustArchi/ArchiSteamFarm/wiki/Commands" }),
contentType: 'application/json',
success: function (data) {
var htmlString = data['Result'],
doc = new DOMParser().parseFromString(htmlString,'text/html'),
result = doc.evaluate('//table[1]/tbody//td[1]', doc, null, XPathResult.ANY_TYPE, null),
myCommands = [],
xres;
while (xres = result.iterateNext()) {
var str = xres.innerText;
if (/\s/.test(str)) {
myCommands.push(str.substr(0,str.indexOf(' ')));
} else {
myCommands.push(str);
}
}
store('cachedCommands', myCommands);
store('cachedCommandsDate', new Date().toLocaleDateString());
for (var i = 0; i < myCommands.length; i++) {
$commandsDropDown.append('<option title="Commands">' + myCommands[i] + '</option>');
}
$('.overlay').remove();
$commandsDropDown.selectpicker('refresh');
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR.status + ' ' + errorThrown + ' - ' + jqXHR.responseJSON['Message'])
}
});
}
$('#' + cmd)
.mouseenter(function () {
$commandInput.attr('placeholder', myCommands[this.id]); // ToDo: Find a better solution for where to display description
})
.mouseleave(function () {
$commandInput.attr('placeholder', $.i18n('placeholder-commands'));
});
}
}
$botsDropDown.append('<option title="Bots">ASF</option>');
$botsDropDown.append('<li><a href="javascript:void(0)" onclick="fillBots(\'ASF\')">ASF</a></li>'); // Fill with default value
$.ajax({ // Fill drop down with all bots + ASF
$.ajax({
url: '/Api/Bot/ASF',
type: 'GET',
success: function (data) {
var json = data['Result'];
$botsDropDown.append('<li class="divider"></li>');
$botsDropDown.append('<option data-divider="true"></option>');
for (var i = 0; i < json.length; i++) {
var obj = json[i],
botName = obj.BotName;
$botsDropDown.append('<li><a href="javascript:void(0)" onclick="fillBots(\'' + botName + '\')">' + botName + '</a></li>');
$botsDropDown.append('<option title="Bots">' + botName + '</option>');
}
$botsDropDown.selectpicker('refresh');
}
});
});
function shouldDropUp() {
return 220 > $('.content-wrapper').height() - ( $('.content-header').height() + $('.content').height() );
var wrapper = $('.content-wrapper').height(),
header = $('.content-header').height(),
mainHeader = $('.main-header').height(),
box = $('.box').height(),
total = wrapper - (header + box + mainHeader),
dropdown = 236;
return dropdown > total;
}
})
</script>

View File

@@ -52,6 +52,7 @@
<i class="fas fa-users fa-fw"></i> <span data-i18n="global-bots">Bots</span>
<span class="pull-right-container bot-status">
<small class="label pull-right bg-gray" id="offlineBots">0</small>
<small class="label pull-right bg-red" id="disconnectedBots" style="display:none;">0</small>
<small class="label pull-right bg-yellow" id="onlineBots">0</small>
<small class="label pull-right bg-olive" id="farmingBots">0</small>
</span>
@@ -64,16 +65,16 @@
<li><a href="generator.html"><i class="far fa-copy fa-fw"></i> <span data-i18n="global-generator">Generator</span></a></li>
<li class="header" data-i18n="global-information">Information</li>
<li class="info-overview">
<a>
<li>
<a class="info-overview" href="javascript:void(0)">
<i class="fas fa-tachometer-alt fa-fw"></i> <span data-i18n="global-ram-usage">RAM Usage</span>
<span class="pull-right-container">
<small class="label pull-right bg-blue" id="ramUsage">0.00 MB</small>
</span>
</a>
</li>
<li class="info-overview">
<a>
<li>
<a class="info-overview" href="javascript:void(0)">
<i class="far fa-clock fa-fw"></i> <span data-i18n="global-uptime">Uptime</span>
<span class="pull-right-container">
<small class="label pull-right bg-blue" id="uptime">0d 0h 0m</small>
@@ -149,7 +150,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-sweetalert/1.0.1/sweetalert.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.2/js/adminlte.min.js"></script>
<script src="../js/adminlte.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.messagestore.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.fallbacks.min.js"></script>
@@ -177,21 +178,6 @@
}
});
});
$('#saveButton').click(function (e) {
swal({
title: 'Are you sure?',
text: 'The config will be updated and the bot will be restarted!',
type: 'warning',
showCancelButton: true,
confirmButtonClass: 'btn-danger',
confirmButtonText: 'Yes, update config!',
closeOnConfirm: false,
showLoaderOnConfirm: true
}, function () { prepareConfigForSaving(); });
e.preventDefault();
});
})
</script>
</body>

View File

@@ -52,6 +52,7 @@
<i class="fas fa-users fa-fw"></i> <span data-i18n="global-bots">Bots</span>
<span class="pull-right-container bot-status">
<small class="label pull-right bg-gray" id="offlineBots">0</small>
<small class="label pull-right bg-red" id="disconnectedBots" style="display:none;">0</small>
<small class="label pull-right bg-yellow" id="onlineBots">0</small>
<small class="label pull-right bg-olive" id="farmingBots">0</small>
</span>
@@ -64,16 +65,16 @@
<li class="active"><a href="generator.html"><i class="far fa-copy fa-fw"></i> <span data-i18n="global-generator">Generator</span></a></li>
<li class="header" data-i18n="global-information">Information</li>
<li class="info-overview">
<a>
<li>
<a class="info-overview" href="javascript:void(0)">
<i class="fas fa-tachometer-alt fa-fw"></i> <span data-i18n="global-ram-usage">RAM Usage</span>
<span class="pull-right-container">
<small class="label pull-right bg-blue" id="ramUsage">0.00 MB</small>
</span>
</a>
</li>
<li class="info-overview">
<a>
<li>
<a class="info-overview" href="javascript:void(0)">
<i class="far fa-clock fa-fw"></i> <span data-i18n="global-uptime">Uptime</span>
<span class="pull-right-container">
<small class="label pull-right bg-blue" id="uptime">0d 0h 0m</small>
@@ -154,7 +155,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-sweetalert/1.0.1/sweetalert.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.2/js/adminlte.min.js"></script>
<script src="../js/adminlte.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.messagestore.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.fallbacks.min.js"></script>
@@ -174,12 +175,6 @@
$('.box-content-config').ready(function () {
loadPageContentGenerator();
});
$('#downloadButton').click(function (e) {
prepareConfigForDownload();
e.preventDefault();
});
})
</script>
</body>

View File

@@ -52,6 +52,7 @@
<i class="fas fa-users fa-fw"></i> <span data-i18n="global-bots">Bots</span>
<span class="pull-right-container bot-status">
<small class="label pull-right bg-gray" id="offlineBots">0</small>
<small class="label pull-right bg-red" id="disconnectedBots" style="display:none;">0</small>
<small class="label pull-right bg-yellow" id="onlineBots">0</small>
<small class="label pull-right bg-olive" id="farmingBots">0</small>
</span>
@@ -64,16 +65,16 @@
<li><a href="generator.html"><i class="far fa-copy fa-fw"></i> <span data-i18n="global-generator">Generator</span></a></li>
<li class="header" data-i18n="global-information">Information</li>
<li class="info-overview">
<a>
<li>
<a class="info-overview" href="javascript:void(0)">
<i class="fas fa-tachometer-alt fa-fw"></i> <span data-i18n="global-ram-usage">RAM Usage</span>
<span class="pull-right-container">
<small class="label pull-right bg-blue" id="ramUsage">0.00 MB</small>
</span>
</a>
</li>
<li class="info-overview">
<a>
<li>
<a class="info-overview" href="javascript:void(0)">
<i class="far fa-clock fa-fw"></i> <span data-i18n="global-uptime">Uptime</span>
<span class="pull-right-container">
<small class="label pull-right bg-blue" id="uptime">0d 0h 0m</small>
@@ -104,7 +105,7 @@
<i class="far fa-file-alt"></i>
<h3 class="box-title" data-i18n="global-log">Log</h3>
<div class="box-tools pull-right">
<button data-i18n="title-log-auto-scroll" title="Toggle auto scroll" type="button" class="btn btn-box-tool text-olive" id="toggleAutoScroll"><i class="fas fa-toggle-on fa-2x"></i></button>
<button type="button" class="btn btn-box-tool text-olive" id="toggleAutoScroll"><i class="fas fa-sync"></i></button>
</div>
</div>
<div class="box-body">
@@ -139,7 +140,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/interact.js/1.2.9/interact.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-sweetalert/1.0.1/sweetalert.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.2/js/adminlte.min.js"></script>
<script src="../js/adminlte.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.messagestore.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.i18n/1.0.4/jquery.i18n.fallbacks.min.js"></script>
@@ -172,7 +173,7 @@
ws.onopen = function (event) {
$('.overlay').remove();
$('.box-content-log').text(''); // Clear log
$('.box-content-log').text('');
};
ws.onmessage = function (event) {
@@ -182,7 +183,7 @@
};
ws.onclose = function (event) {
if (event.code !== 1000) { // Code 1000 means that the connection was closed normally
if (event.code !== 1000) { // 1000 = connection was closed normally
swal({
title: $.i18n('global-error-title'),
text: $.i18n('log-event-code', event.code),
@@ -199,14 +200,12 @@
startWebSocket();
$('#toggleAutoScroll').removeClass('text-grey');
$('#toggleAutoScroll').addClass('text-olive');
$('#toggleAutoScroll').html('<i class="fas fa-toggle-on fa-2x"></i>');
$('#toggleAutoScroll').blur();
$('#toggleAutoScroll').blur();
} else if (ws.readyState === ws.OPEN) {
ws.close();
$('#toggleAutoScroll').removeClass('text-olive');
$('#toggleAutoScroll').addClass('text-grey');
$('#toggleAutoScroll').html('<i class="fas fa-toggle-on fa-2x fa-rotate-180"></i>');
$('#toggleAutoScroll').blur();
$('#toggleAutoScroll').blur();
}
});
@@ -218,8 +217,7 @@
ws.close();
$('#toggleAutoScroll').removeClass('text-olive');
$('#toggleAutoScroll').addClass('text-grey');
$('#toggleAutoScroll').html('<i class="fas fa-toggle-on fa-2x fa-rotate-180"></i>');
$('#toggleAutoScroll').blur();
$('#toggleAutoScroll').blur();
}
}