diff --git a/ArchiSteamFarm/www/css/_nightmode.min.css b/ArchiSteamFarm/www/css/_nightmode.min.css index a1328d33f..9907d866e 100644 --- a/ArchiSteamFarm/www/css/_nightmode.min.css +++ b/ArchiSteamFarm/www/css/_nightmode.min.css @@ -1 +1 @@ -[class*=nightmode] ::-webkit-scrollbar{width:10px;height:10px;background-color:#333}[class*=nightmode] ::-webkit-scrollbar-thumb{-webkit-border-radius:2px;border-radius:2px;background:#555}[class*=nightmode] :focus{outline:0!important}[class*=nightmode].skin-black .main-header .navbar{background-color:#161616!important}[class*=nightmode].skin-blue .main-header .navbar,[class*=nightmode].skin-green .main-header .navbar,[class*=nightmode].skin-purple .main-header .navbar,[class*=nightmode].skin-red .main-header .navbar,[class*=nightmode].skin-teal .main-header .navbar,[class*=nightmode].skin-yellow .main-header .navbar{box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-black .main-header .logo{border:transparent;color:#6e7375;background-color:#161616}[class*=nightmode].skin-black .main-header .logo:hover{background-color:#232323}[class*=nightmode].skin-blue .main-header .logo,[class*=nightmode].skin-green .main-header .logo,[class*=nightmode].skin-purple .main-header .logo,[class*=nightmode].skin-red .main-header .logo,[class*=nightmode].skin-teal .main-header .logo,[class*=nightmode].skin-yellow .main-header .logo{border-bottom:transparent;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-blue .main-header .logo:hover,[class*=nightmode].skin-green .main-header .logo:hover,[class*=nightmode].skin-purple .main-header .logo:hover,[class*=nightmode].skin-red .main-header .logo:hover,[class*=nightmode].skin-teal .main-header .logo:hover,[class*=nightmode].skin-yellow .main-header .logo:hover{box-shadow:inset 0 0 0 1000px rgba(64,64,64,.72)!important}[class*=nightmode] .content-wrapper{background-color:#111}[class*=nightmode].layout-boxed{background:rgba(22,22,22,.8901960784313725)}[class*=nightmode] .main-footer{border-top:1px solid #161616;color:#6e7375;background:#161616}[class*=nightmode] .main-footer a{color:#23527c}[class*=nightmode] .main-footer a:hover{color:#337ab7}[class*=nightmode] .sweet-alert{color:#a6acaf;background-color:#161616}[class*=nightmode] .text-muted{color:#a6acaf}[class*=nightmode] .sweet-alert .sa-icon.sa-custom::after,[class*=nightmode] .sweet-alert .sa-icon.sa-custom::before,[class*=nightmode] .sweet-alert .sa-icon.sa-error::after,[class*=nightmode] .sweet-alert .sa-icon.sa-error::before,[class*=nightmode] .sweet-alert .sa-icon.sa-info::after,[class*=nightmode] .sweet-alert .sa-icon.sa-info::before,[class*=nightmode] .sweet-alert .sa-icon.sa-success::after,[class*=nightmode] .sweet-alert .sa-icon.sa-success::before,[class*=nightmode] .sweet-alert .sa-icon.sa-warning::after,[class*=nightmode] .sweet-alert .sa-icon.sa-warning::before,[class*=nightmode] [class=sa-fix]{background:0 0!important}[class*=nightmode] .btn-default,[class*=nightmode] .btn-primary{border-color:#000102;color:#aaadaf;background-color:#1d1e22}[class*=nightmode] .btn:focus{color:#6e7375;background-color:#1d1e22}[class*=nightmode] .btn-danger,[class*=nightmode] .btn-danger:focus{border-color:#000102!important;color:#aaadaf;box-shadow:inset 0 0 0 1000px rgba(58,4,4,.66)!important}[class*=nightmode] .btn-danger:focus{background-color:#dd4b39!important}[class*=nightmode] .btn-danger:hover{border-color:#000102!important;box-shadow:inset 0 0 0 1000px rgba(13,1,1,.66)!important}[class*=nightmode] .btn-default:active,[class*=nightmode] .btn-default:active:focus,[class*=nightmode] .btn-default:focus,[class*=nightmode] .btn-default:hover,[class*=nightmode] .btn-primary:hover,[class*=nightmode] .open>.dropdown-toggle.btn-default{border-color:#000102!important;color:#b9b4b4!important;background-color:#2c2c33!important}[class*=nightmode] .form-control{border-color:#000102;color:#a6acaf;background:#1d1e22}[class*=nightmode] .main-header .navbar .nav>li>a,[class*=nightmode] .main-header .navbar .sidebar-toggle{color:#a6acaf}[class*=nightmode].skin-black .main-header .navbar .nav .open>a,[class*=nightmode].skin-black .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-black .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-black .main-header .navbar .nav>.active>a,[class*=nightmode].skin-black .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-black .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-black .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-black .main-header .navbar .sidebar-toggle:hover{background:#232323}[class*=nightmode].skin-black .main-header .navbar .navbar-custom-menu .navbar-nav>li>a,[class*=nightmode].skin-black .main-header .navbar .navbar-right>li>a,[class*=nightmode].skin-black .main-header .navbar>.sidebar-toggle{border:none}[class*=nightmode].skin-blue .main-header .navbar .nav .open>a,[class*=nightmode].skin-blue .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-blue .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-blue .main-header .navbar .nav>.active>a,[class*=nightmode].skin-blue .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-blue .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-blue .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-blue .main-header .navbar .sidebar-toggle:hover{background:#075d8f;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-purple .main-header .navbar .nav .open>a,[class*=nightmode].skin-purple .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-purple .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-purple .main-header .navbar .nav>.active>a,[class*=nightmode].skin-purple .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-purple .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-purple .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-purple .main-header .navbar .sidebar-toggle:hover{background:#3f3982;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-green .main-header .navbar .nav .open>a,[class*=nightmode].skin-green .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-green .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-green .main-header .navbar .nav>.active>a,[class*=nightmode].skin-green .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-green .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-green .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-green .main-header .navbar .sidebar-toggle:hover{background:#258b4a;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-red .main-header .navbar .nav .open>a,[class*=nightmode].skin-red .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-red .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-red .main-header .navbar .nav>.active>a,[class*=nightmode].skin-red .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-red .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-red .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-red .main-header .navbar .sidebar-toggle:hover{background:#b92d2d;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-yellow .main-header .navbar .nav .open>a,[class*=nightmode].skin-yellow .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-yellow .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-yellow .main-header .navbar .nav>.active>a,[class*=nightmode].skin-yellow .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-yellow .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-yellow .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-yellow .main-header .navbar .sidebar-toggle:hover{background:#be7e1c;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-teal .main-header .navbar .nav .open>a,[class*=nightmode].skin-teal .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-teal .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-teal .main-header .navbar .nav>.active>a,[class*=nightmode].skin-teal .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-teal .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-teal .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-teal .main-header .navbar .sidebar-toggle:hover{background:#216362;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode] .control-sidebar-dark,[class*=nightmode] .control-sidebar-dark+.control-sidebar-bg,[class*=nightmode] .main-sidebar{background-color:#1a1a1a}[class*=nightmode] .sidebar-menu>li.header{color:#a6acaf;background:#151414}[class*=nightmode].skin-black .sidebar-menu>li.active>a{border-left-color:#6e7375}[class*=nightmode] .sidebar-menu>li.active>a,[class*=nightmode] .sidebar-menu>li.menu-open>a,[class*=nightmode] .sidebar-menu>li:hover>a{color:#ebebeb;background:#272626;box-shadow:inset 0 0 0 1000px rgba(60,56,56,.1)!important}[class*=nightmode] .bg-blue,[class*=nightmode] .bg-gray,[class*=nightmode] .bg-olive,[class*=nightmode] .bg-yellow{color:#000!important;box-shadow:inset 0 0 0 1000px rgba(0,0,0,.2)!important}[class*=nightmode] .box-header,[class*=nightmode] .breadcrumb>.active,[class*=nightmode] .breadcrumb>li,[class*=nightmode] h1{color:#7d8284}[class*=nightmode] .box{border-top:none}[class*=nightmode] .box-header.with-border{border-bottom:none}[class*=nightmode] .box-body,[class*=nightmode] .box-footer,[class*=nightmode] .box-header{border:none;border-bottom-right-radius:0;border-bottom-left-radius:0;background:#222}[class*=nightmode] .info-box{border:1px solid #2b2929;color:#a6acaf;background:#161616}[class*=nightmode] [class*=info-box-icon]{border-right:1px solid #2b2929;border-bottom:1px solid #2b2929;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode] .box-header>.box-tools.pull-right .dropdown-menu,[class*=nightmode] .scrollable-menu{border:none;background:#161616}[class*=nightmode] .scrollable-menu>li>a{color:#a6acaf}[class*=nightmode] .scrollable-menu>li>a:hover{color:#b1b8bb;background-color:#232323}[class*=nightmode] .dropdown-menu>.divider{background-color:#000102}[class*=nightmode] #commandSent,[class*=nightmode] .box-content-command,[class*=nightmode] .box-content-log{border:1px solid #000102;color:#a8a8a8;background:#161616}[class*=nightmode] #commandSent{border-top:none}[class*=nightmode] .nav-tabs-custom,[class*=nightmode] .nav-tabs-custom>.nav-tabs>li.active:hover>a{color:#a8a8a8;background:#222}[class*=nightmode] .nav-tabs-custom>.nav-tabs{border-bottom:1px solid #000102}[class*=nightmode] .nav-tabs-custom>.nav-tabs>li>a{color:#a8a8a8}[class*=nightmode] .nav-tabs-custom>.nav-tabs>li.active>a{border-right-color:#000102;border-left-color:#000102;color:#a8a8a8;background:#222}[class*=nightmode] .nav-tabs-custom>.nav-tabs>li.active{border-top-color:#6e7375} \ No newline at end of file +[class*=nightmode] ::-webkit-scrollbar-thumb{background:#555}[class*=nightmode] :focus{outline:0!important}[class*=nightmode].skin-black .main-header .navbar{background-color:#161616!important}[class*=nightmode].skin-blue .main-header .navbar,[class*=nightmode].skin-green .main-header .navbar,[class*=nightmode].skin-purple .main-header .navbar,[class*=nightmode].skin-red .main-header .navbar,[class*=nightmode].skin-teal .main-header .navbar,[class*=nightmode].skin-yellow .main-header .navbar{box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-black .main-header .logo{border:transparent;color:#6e7375;background-color:#161616}[class*=nightmode].skin-black .main-header .logo:hover{background-color:#232323}[class*=nightmode].skin-blue .main-header .logo,[class*=nightmode].skin-green .main-header .logo,[class*=nightmode].skin-purple .main-header .logo,[class*=nightmode].skin-red .main-header .logo,[class*=nightmode].skin-teal .main-header .logo,[class*=nightmode].skin-yellow .main-header .logo{border-bottom:transparent;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-blue .main-header .logo:hover,[class*=nightmode].skin-green .main-header .logo:hover,[class*=nightmode].skin-purple .main-header .logo:hover,[class*=nightmode].skin-red .main-header .logo:hover,[class*=nightmode].skin-teal .main-header .logo:hover,[class*=nightmode].skin-yellow .main-header .logo:hover{box-shadow:inset 0 0 0 1000px rgba(64,64,64,.72)!important}[class*=nightmode] .content-wrapper{background-color:#111}[class*=nightmode].layout-boxed{background:rgba(22,22,22,.8901960784313725)}[class*=nightmode] .main-footer{border-top:1px solid #161616;color:#6e7375;background:#161616}[class*=nightmode] .main-footer a{color:#23527c}[class*=nightmode] .main-footer a:hover{color:#337ab7}[class*=nightmode] .sweet-alert{color:#a6acaf;background-color:#161616}[class*=nightmode] .text-muted{color:#a6acaf}[class*=nightmode] .sweet-alert .sa-icon.sa-custom::after,[class*=nightmode] .sweet-alert .sa-icon.sa-custom::before,[class*=nightmode] .sweet-alert .sa-icon.sa-error::after,[class*=nightmode] .sweet-alert .sa-icon.sa-error::before,[class*=nightmode] .sweet-alert .sa-icon.sa-info::after,[class*=nightmode] .sweet-alert .sa-icon.sa-info::before,[class*=nightmode] .sweet-alert .sa-icon.sa-success::after,[class*=nightmode] .sweet-alert .sa-icon.sa-success::before,[class*=nightmode] .sweet-alert .sa-icon.sa-warning::after,[class*=nightmode] .sweet-alert .sa-icon.sa-warning::before,[class*=nightmode] [class=sa-fix]{background:0 0!important}[class*=nightmode] .btn-default,[class*=nightmode] .btn-primary{border-color:#000102;color:#aaadaf;background-color:#1d1e22}[class*=nightmode] .btn:focus{color:#6e7375;background-color:#1d1e22}[class*=nightmode] .btn-danger,[class*=nightmode] .btn-danger:focus{border-color:#000102!important;color:#aaadaf;box-shadow:inset 0 0 0 1000px rgba(58,4,4,.66)!important}[class*=nightmode] .btn-danger:focus{background-color:#dd4b39!important}[class*=nightmode] .btn-danger:hover{border-color:#000102!important;box-shadow:inset 0 0 0 1000px rgba(13,1,1,.66)!important}[class*=nightmode] .btn-success,[class*=nightmode] .btn-success:focus{border-color:#000102!important;color:#aaadaf;box-shadow:inset 0 0 0 1000px rgba(8,47,12,.66)!important}[class*=nightmode] .btn-success:focus{background-color:#00a65a!important}[class*=nightmode] .btn-success:hover{border-color:#000102!important;box-shadow:inset 0 0 0 1000px rgba(5,32,6,.66)!important}[class*=nightmode] .btn-default:active,[class*=nightmode] .btn-default:active:focus,[class*=nightmode] .btn-default:focus,[class*=nightmode] .btn-default:hover,[class*=nightmode] .btn-primary:hover,[class*=nightmode] .open>.dropdown-toggle.btn-default{border-color:#000102!important;color:#b9b4b4!important;background-color:#2c2c33!important}[class*=nightmode] #gamesToRedeemInBackground,[class*=nightmode] .form-control{border-color:#000102;color:#a6acaf;background:#1d1e22}[class*=nightmode] .input-group .input-group-addon{border-color:#000102;color:#a6acaf;background-color:#1e1e1e}[class*=nightmode] .main-header .navbar .nav>li>a,[class*=nightmode] .main-header .navbar .sidebar-toggle{color:#a6acaf}[class*=nightmode].skin-black .main-header .navbar .nav .open>a,[class*=nightmode].skin-black .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-black .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-black .main-header .navbar .nav>.active>a,[class*=nightmode].skin-black .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-black .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-black .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-black .main-header .navbar .sidebar-toggle:hover{background:#232323}[class*=nightmode].skin-black .main-header .navbar .navbar-custom-menu .navbar-nav>li>a,[class*=nightmode].skin-black .main-header .navbar .navbar-right>li>a,[class*=nightmode].skin-black .main-header .navbar>.sidebar-toggle{border:none}[class*=nightmode].skin-blue .main-header .navbar .nav .open>a,[class*=nightmode].skin-blue .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-blue .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-blue .main-header .navbar .nav>.active>a,[class*=nightmode].skin-blue .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-blue .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-blue .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-blue .main-header .navbar .sidebar-toggle:hover{background:#075d8f;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-purple .main-header .navbar .nav .open>a,[class*=nightmode].skin-purple .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-purple .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-purple .main-header .navbar .nav>.active>a,[class*=nightmode].skin-purple .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-purple .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-purple .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-purple .main-header .navbar .sidebar-toggle:hover{background:#3f3982;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-green .main-header .navbar .nav .open>a,[class*=nightmode].skin-green .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-green .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-green .main-header .navbar .nav>.active>a,[class*=nightmode].skin-green .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-green .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-green .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-green .main-header .navbar .sidebar-toggle:hover{background:#258b4a;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-red .main-header .navbar .nav .open>a,[class*=nightmode].skin-red .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-red .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-red .main-header .navbar .nav>.active>a,[class*=nightmode].skin-red .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-red .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-red .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-red .main-header .navbar .sidebar-toggle:hover{background:#b92d2d;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-yellow .main-header .navbar .nav .open>a,[class*=nightmode].skin-yellow .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-yellow .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-yellow .main-header .navbar .nav>.active>a,[class*=nightmode].skin-yellow .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-yellow .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-yellow .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-yellow .main-header .navbar .sidebar-toggle:hover{background:#be7e1c;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode].skin-teal .main-header .navbar .nav .open>a,[class*=nightmode].skin-teal .main-header .navbar .nav .open>a:focus,[class*=nightmode].skin-teal .main-header .navbar .nav .open>a:hover,[class*=nightmode].skin-teal .main-header .navbar .nav>.active>a,[class*=nightmode].skin-teal .main-header .navbar .nav>li>a:active,[class*=nightmode].skin-teal .main-header .navbar .nav>li>a:focus,[class*=nightmode].skin-teal .main-header .navbar .nav>li>a:hover,[class*=nightmode].skin-teal .main-header .navbar .sidebar-toggle:hover{background:#216362;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode] .control-sidebar-dark,[class*=nightmode] .control-sidebar-dark+.control-sidebar-bg,[class*=nightmode] .main-sidebar{background-color:#1a1a1a}[class*=nightmode] .sidebar-menu>li.header{color:#a6acaf;background:#151414}[class*=nightmode].skin-black .sidebar-menu>li.active>a{border-left-color:#6e7375}[class*=nightmode] .sidebar-menu>li.active>a,[class*=nightmode] .sidebar-menu>li.menu-open>a,[class*=nightmode] .sidebar-menu>li:hover>a{color:#ebebeb;background:#272626;box-shadow:inset 0 0 0 1000px rgba(60,56,56,.1)!important}[class*=nightmode] .bg-blue,[class*=nightmode] .bg-gray,[class*=nightmode] .bg-olive,[class*=nightmode] .bg-yellow{color:#000!important;box-shadow:inset 0 0 0 1000px rgba(0,0,0,.2)!important}[class*=nightmode] .box-header,[class*=nightmode] .breadcrumb>.active,[class*=nightmode] .breadcrumb>li,[class*=nightmode] h1{color:#7d8284}@media (max-width:991px){.content-header>.breadcrumb{background:0 0!important}}[class*=nightmode] .content>.box{border-top:none!important}[class*=nightmode] .box-header.with-border{border-bottom:none}[class*=nightmode] .box-body,[class*=nightmode] .box-footer,[class*=nightmode] .box-header{border:none;border-bottom-right-radius:0;border-bottom-left-radius:0;background:#222}[class*=nightmode] .box{border-top:3px solid #717375}[class*=nightmode] .box.box-success{border-top-color:#016035}[class*=nightmode] .box.box-warning{border-top-color:#9e6b19}[class*=nightmode] .info-box{border:1px solid #2b2929;color:#a6acaf;background:#161616}[class*=nightmode] [class*=info-box-icon]{border-right:1px solid #2b2929;border-bottom:1px solid #2b2929;box-shadow:inset 0 0 0 1000px rgba(64,64,64,.66)!important}[class*=nightmode] #botRow .ui-selected{color:#a8a8a8;background:#2f2e2e}[class*=nightmode] .box-header>.box-tools.pull-right .dropdown-menu,[class*=nightmode] .scrollable-menu{border:none;background:#161616}[class*=nightmode] .scrollable-menu>li>a{color:#a6acaf}[class*=nightmode] .scrollable-menu>li>a:hover{color:#b1b8bb;background-color:#232323}[class*=nightmode] .dropdown-menu>.divider{background-color:#000102}[class*=nightmode] #commandSent,[class*=nightmode] .box-content-command,[class*=nightmode] .box-content-log{border:1px solid #000102;color:#a8a8a8;background:#161616}[class*=nightmode] #commandSent{border-top:none}[class*=nightmode] .nav-tabs-custom,[class*=nightmode] .nav-tabs-custom>.nav-tabs>li.active:hover>a{color:#a8a8a8;background:#222}[class*=nightmode] .nav-tabs-custom>.nav-tabs{border-bottom:1px solid #000102}[class*=nightmode] .nav-tabs-custom>.nav-tabs>li>a{color:#a8a8a8}[class*=nightmode] .nav-tabs-custom>.nav-tabs>li.active>a{border-right-color:#000102;border-left-color:#000102;color:#a8a8a8;background:#222}[class*=nightmode] .nav-tabs-custom>.nav-tabs>li.active{border-top-color:#6e7375} \ No newline at end of file diff --git a/ArchiSteamFarm/www/css/app.css b/ArchiSteamFarm/www/css/app.css index 14be7f171..789c75bb4 100644 --- a/ArchiSteamFarm/www/css/app.css +++ b/ArchiSteamFarm/www/css/app.css @@ -10,7 +10,8 @@ border-color: rgb(221, 221, 221); border-style: solid; border-width: 1px; - overflow: auto; + overflow-y: auto; + overflow-x: hidden; } .box-content-command { @@ -21,7 +22,8 @@ border-color: rgb(221, 221, 221); border-style: solid; border-width: 1px; - overflow: auto; + overflow-y: auto; + overflow-x: hidden; font-family: monospace, monospace; color: rgb(255, 255, 255); font-size: 14px; @@ -173,3 +175,9 @@ button.bot-resumed:hover { background: #F39814; color: white; } + +#gamesToRedeemInBackground { + width: 100%; + height: 100px; + font-size: 18px; +} diff --git a/ArchiSteamFarm/www/js/app.js b/ArchiSteamFarm/www/js/app.js index 005c872f3..6e13570ff 100644 --- a/ArchiSteamFarm/www/js/app.js +++ b/ArchiSteamFarm/www/js/app.js @@ -19,26 +19,26 @@ function store(name, val) { function getIPCPassword() { swal({ - title: "IPC password required", - text: "Please enter the correct IPC password:", - type: "input", + title: 'IPC password required', + text: 'Please enter the correct IPC password:', + type: 'input', showCancelButton: true, closeOnConfirm: false, - inputPlaceholder: "Type your password", - inputType: "password" + inputPlaceholder: 'Type your password', + inputType: 'password' }, function (typedPassword) { if (typedPassword === false) return false; - if (typedPassword === "") { - swal.showInputError("You need to enter a valid password!"); + if (typedPassword === '') { + swal.showInputError('You need to enter a valid password!'); return false; } store('IPCPassword', typedPassword); swal({ - title: "Success!", - text: "Your IPC password has been saved.", - type: "success" + title: 'Success!', + text: 'Your IPC password has been saved.', + type: 'success' }, function () { location.reload(); }); }); } @@ -50,14 +50,14 @@ if (IPCPassword) $.ajaxSetup({ beforeSend: function (jqXHR) { jqXHR.setRequestHe //#region Footer $('.main-footer').ready(function () { $.ajax({ - url: "/Api/ASF", - type: "GET", + url: '/Api/ASF', + type: 'GET', statusCode: { 401: function () { getIPCPassword(); } }, success: function (data) { - var obj = data["Result"].Version, + var obj = data['Result'].Version, version = obj.Major + '.' + obj.Minor + '.' + obj.Build + '.' + obj.Revision; - $("#version").html('Version ' + version); + $('#version').html('Version ' + version); $('#changelog').attr('href', 'https://github.com/JustArchi/ArchiSteamFarm/releases/tag/' + version); } }); @@ -72,10 +72,10 @@ $('.bot-status').ready(function () { offlineBots = 0; $.ajax({ - url: "/Api/Bot/ASF", - type: "GET", + url: '/Api/Bot/ASF', + type: 'GET', success: function (data) { - var json = data["Result"]; + var json = data['Result']; for (var i = 0; i < json.length; i++) { var obj = json[i], @@ -85,7 +85,7 @@ $('.bot-status').ready(function () { if (KeepRunning === false) { offlineBots++; } else { - if (TimeRemaining === "00:00:00") { + if (TimeRemaining === '00:00:00') { idleBots++; } else { activeBots++; @@ -93,9 +93,9 @@ $('.bot-status').ready(function () { } } - $("#offlineBots").text(offlineBots); - $("#idleBots").text(idleBots); - $("#activeBots").text(activeBots); + $('#offlineBots').text(offlineBots); + $('#idleBots').text(idleBots); + $('#activeBots').text(activeBots); } }); } @@ -109,9 +109,9 @@ $('.bot-status').ready(function () { $('.info-overview').ready(function () { function displayRAMUsage() { $.ajax({ - url: "/Api/ASF", - type: "GET", - success: function (data) { $("#ramUsage").html((data["Result"].MemoryUsage / 1024).toFixed(2) + " MB"); } + url: '/Api/ASF', + type: 'GET', + success: function (data) { $('#ramUsage').html((data['Result'].MemoryUsage / 1024).toFixed(2) + ' MB'); } }); } @@ -120,9 +120,9 @@ $('.info-overview').ready(function () { function displayUptime() { $.ajax({ - url: "/Api/ASF", - type: "GET", - success: function (data) { $("#uptime").html(uptimeToString(data["Result"].ProcessStartTime)); } + url: '/Api/ASF', + type: 'GET', + success: function (data) { $('#uptime').html(uptimeToString(data['Result'].ProcessStartTime)); } }); } @@ -146,22 +146,22 @@ function uptimeToString(startTime) { hours = (hours < 10 ? '0' : '') + hours; mins = (mins < 10 ? '0' : '') + mins; - return days + "d " + hours + "h " + mins + "m"; + return days + 'd ' + hours + 'h ' + mins + 'm'; } //#endregion ASF Information //#region Command Page var $cmdInput = $('#commandInput'); -function fillCommand(cmd) { $cmdInput.val(cmd); } -function fillBots(bot) { $cmdInput.val($cmdInput.val() + ' ' + bot); } +function fillCommand(cmd) { $cmdInput.val(cmd + ' '); } +function fillBots(bot) { $cmdInput.val($cmdInput.val() + bot); } function getDateAndTime() { var currentdate = new Date(); return ('0' + currentdate.getDate()).slice(-2) + '.' + ('0' + (currentdate.getMonth() + 1)).slice(-2) + '.' - + currentdate.getFullYear() + " @ " - + ('0' + currentdate.getHours()).slice(-2) + ":" - + ('0' + currentdate.getMinutes()).slice(-2) + ":" + + currentdate.getFullYear() + ' @ ' + + ('0' + currentdate.getHours()).slice(-2) + ':' + + ('0' + currentdate.getMinutes()).slice(-2) + ':' + ('0' + currentdate.getSeconds()).slice(-2); } @@ -169,41 +169,41 @@ function logCommand(state, cmd) { var tmpAutoClear = get('autoClear'); if (state) { - $("#commandSent").val(getDateAndTime() + ' Command sent: ' + cmd); + $('#commandSent').val(getDateAndTime() + ' Command sent: ' + cmd); } else { if (tmpAutoClear === 'false') { - $(".box-content-command").append('\n' + getDateAndTime() + ' Response received: ' + cmd + '\n'); + $('.box-content-command').append('\n' + getDateAndTime() + ' Response received: ' + cmd + '\n'); } else { - $(".box-content-command").text(getDateAndTime() + ' Response received: ' + cmd); + $('.box-content-command').text(getDateAndTime() + ' Response received: ' + cmd); } } } function sendCommand() { var command = $cmdInput.val(), - requestURL = "/Api/Command/" + command, + requestURL = '/Api/Command/' + command, tmpAutoClear = get('autoClear'); - if (command === "") return; + if (command === '') return; logCommand(true, command); if (tmpAutoClear === 'false') { - if ($(".box-content-command").text() === '') { - $(".box-content-command").append(getDateAndTime() + ' Waiting for response...' + '\n'); + if ($('.box-content-command').text() === '') { + $('.box-content-command').append(getDateAndTime() + ' Waiting for response...' + '\n'); } else { - $(".box-content-command").append('\n' + getDateAndTime() + ' Waiting for response...' + '\n'); + $('.box-content-command').append('\n' + getDateAndTime() + ' Waiting for response...' + '\n'); } } else { - $(".box-content-command").text(getDateAndTime() + ' Waiting for response...'); + $('.box-content-command').text(getDateAndTime() + ' Waiting for response...'); } - $(".box-content-command").append('
'); + $('.box-content-command').append('
'); $.ajax({ url: requestURL, - type: "GET", + type: 'GET', success: function (data) { $('.overlay').remove(); logCommand(false, data['Result']); @@ -218,7 +218,7 @@ function sendCommand() { } //#endregion Command Page -//#region Config Changer Page +//#region Config Page //#region New stuff //const cachedTypeDefinitions = new Map(); @@ -328,14 +328,20 @@ function sendCommand() { //} //#endregion New stuff -function generateConfigChangerHTML() { +var globalBotConfig = {}, + globalDefaultConfig = {}; + +function generateConfigHTML(prefix) { + $('#config' + prefix + 'Tab').empty(); // Clear page content first + $.ajax({ - url: "/Api/Type/ArchiSteamFarm.BotConfig", - type: "GET", + url: '/Api/Type/ArchiSteamFarm.BotConfig', + type: 'GET', success: function (data) { - var obj = data["Result"], - objBody = obj["Body"], - boxBodyHTML = "", + var obj = data['Result'], + objBody = obj['Body'], + boxHeaderHTML = '', + boxBodyHTML = '', textBoxes = '', checkBoxes = '', numberBoxes = '', @@ -351,32 +357,32 @@ function generateConfigChangerHTML() { switch (value) { case 'System.Boolean': checkBoxes += '
' - + '' + + '' + readableKey + '
'; break; case 'System.String': textBoxes += '
' - + '' - + '' + + '' + + '' + '
'; break; case 'System.Byte': numberBoxes += '
' - + '' - + '' + + '' + + '' + '
'; break; case 'System.Collections.Generic.Dictionary`2[System.UInt64][ArchiSteamFarm.BotConfig+EPermission]': textAreas += '
' - + '' - + '' + + '' + + '' + '
'; break; default: defaultBoxes += '
' - + '' - + '' + + '' + + '' + '
'; } } @@ -386,22 +392,131 @@ function generateConfigChangerHTML() { + '
' + checkBoxes + textAreas + '
'; } - $('#configChangerTab').html('
' - + '

' - + '
' - + '
' - + '' - + '' - + '
' - + '
' - + '
' - + '
' - + boxBodyHTML - + '
'); - + if (prefix === 'Changer') { + boxHeaderHTML = '
' + + '

' + + '
' + + '
' + + '' + + '' + + '
' + + '
' + + '
'; + } else if (prefix === 'Generator') { + boxHeaderHTML = '
' + + '

' + + '
' + + '
' + + '' + + '' + + '
' + + '
' + + '
'; + } + + $('#config' + prefix + 'Tab').html(boxHeaderHTML + '
' + boxBodyHTML + '
'); + + createClickFunction(); + } + }); +} + +function generateASFConfigHTML(prefix) { + $('#config' + prefix + 'Tab').empty(); // Clear page content first + + $.ajax({ + url: '/Api/Type/ArchiSteamFarm.GlobalConfig', + type: 'GET', + success: function (data) { + var obj = data['Result'], + objBody = obj['Body'], + boxHeaderHTML = '', + boxBodyHTML = '', + textBoxes = '', + checkBoxes = '', + numberBoxes = '', + defaultBoxes = '', + textAreas = ''; + + for (var key in objBody) { + if (objBody.hasOwnProperty(key)) { + var value = objBody[key], + noSpaceKey = key.replace(/([A-Z])/g, ' $1').trim(), + readableKey = noSpaceKey.replace(/([A-Z])\s(?=[A-Z])/g, '$1'); + + switch (value) { + case 'System.Boolean': + checkBoxes += '
' + + '' + + readableKey + + '
'; + break; + case 'System.String': + textBoxes += '
' + + '' + + '' + + '
'; + break; + case 'System.Byte': + numberBoxes += '
' + + '' + + '' + + '
'; + break; + case 'System.Collections.Generic.HashSet`1[System.String]': + textAreas += '
' + + '' + + '' + + '
'; + break; + default: + defaultBoxes += '
' + + '' + + '' + + '
'; + } + } + + boxBodyHTML = '
' + numberBoxes + '
' + + '
' + checkBoxes + defaultBoxes + textBoxes + textAreas + '
'; + } + + if (prefix === 'Changer') { + boxHeaderHTML = '
' + + '

' + + '
' + + '
' + + '' + + '' + + '
' + + '
' + + '
'; + } else if (prefix === 'Generator') { + boxHeaderHTML = '
' + + '

' + + '
' + + '
' + + '' + + '' + + '
' + + '
' + + '
'; + } + + $('#config' + prefix + 'Tab').html(boxHeaderHTML + '
' + boxBodyHTML + '
'); + createClickFunction(); } }); @@ -413,7 +528,7 @@ function createClickFunction() { for (i = 0; i < myNodeList.length; i++) { var myID = myNodeList[i].id; - $('#' + myID).bind("click", function () { + $('#' + myID).bind('click', function () { var $key = $('#' + this.id); if ($key.hasClass('text-grey')) { @@ -431,14 +546,12 @@ function createClickFunction() { } } -var globalBotConfig = {}; - function loadConfigValuesForBot(botName) { $.ajax({ - url: "/Api/Bot/" + encodeURIComponent(botName), - type: "GET", + url: '/Api/Bot/' + encodeURIComponent(botName), + type: 'GET', success: function (data) { - var obj = data["Result"], + var obj = data['Result'], objBot = obj[0], BotConfig = objBot.BotConfig; @@ -447,7 +560,7 @@ function loadConfigValuesForBot(botName) { for (var key in BotConfig) { if (BotConfig.hasOwnProperty(key)) { var value = BotConfig[key], - $key = $('#' + key), + $key = $('#Changer' + key), keyObj = $key[0]; if (typeof keyObj === 'undefined') continue; @@ -459,11 +572,11 @@ function loadConfigValuesForBot(botName) { if (value) { $key.removeClass('text-grey'); $key.addClass('text-olive'); - $('#ico' + key).removeClass('fa-rotate-180'); + $('#icoChanger' + key).removeClass('fa-rotate-180'); } else { $key.removeClass('text-olive'); $key.addClass('text-grey'); - $('#ico' + key).addClass('fa-rotate-180'); + $('#icoChanger' + key).addClass('fa-rotate-180'); } break; case 'System.UInt64': @@ -487,14 +600,68 @@ function loadConfigValuesForBot(botName) { }); } +function loadDefaultConfigValues(mode) { + var namespace = mode === 'ASF' ? 'ArchiSteamFarm.GlobalConfig' : 'ArchiSteamFarm.BotConfig'; + + $.ajax({ + url: '/Api/Structure/' + namespace, + type: 'GET', + success: function (data) { + var BotConfig = data['Result']; + + globalDefaultConfig = BotConfig; + + for (var key in BotConfig) { + if (BotConfig.hasOwnProperty(key)) { + var value = BotConfig[key], + $key = $('#Generator' + key), + keyObj = $key[0]; + + if (typeof keyObj === 'undefined') continue; + + var inputType = keyObj.dataset.type; + + switch (inputType) { + case 'System.Boolean': + if (value) { + $key.removeClass('text-grey'); + $key.addClass('text-olive'); + $('#icoGenerator' + key).removeClass('fa-rotate-180'); + } else { + $key.removeClass('text-olive'); + $key.addClass('text-grey'); + $('#icoGenerator' + key).addClass('fa-rotate-180'); + } + break; + case 'System.UInt64': + $key.val(BotConfig['s_' + key]); + break; + case 'System.Collections.Generic.Dictionary`2[System.UInt64][ArchiSteamFarm.BotConfig+EPermission]': + $key.text(''); // Reset textarea before filling + + for (var steamID64 in value) { + if (value.hasOwnProperty(steamID64)) $key.append(steamID64 + ':' + value[steamID64] + '\n'); + } + break; + default: + $key.val(value); + } + } + } + + loadModeDropDown(mode); + } + }); +} + function prepareBotConfigForSaving() { - var botName = $("#saveButton").data("BotName"), + var botName = $('#saveButton').data('BotName'), BotConfig = globalBotConfig; for (var key in BotConfig) { if (BotConfig.hasOwnProperty(key)) { var value = BotConfig[key], - $key = $('#' + key), + $key = $('#Changer' + key), keyObj = $key[0]; if (typeof keyObj === 'undefined') continue; @@ -504,7 +671,7 @@ function prepareBotConfigForSaving() { switch (inputType) { case 'System.Boolean': - var $keyState = $('#ico' + key).hasClass('fa-rotate-180') ? false : true; + var $keyState = $('#icoChanger' + key).hasClass('fa-rotate-180') ? false : true; if ($keyState !== value) BotConfig[key] = $keyState; break; @@ -519,6 +686,7 @@ function prepareBotConfigForSaving() { } break; case 'System.Collections.Generic.HashSet`1[System.UInt32]': + if ($keyValue === '') continue; var items = $keyValue.split(','); if (items.map(Number) !== value) BotConfig[key] = items.map(Number); break; @@ -557,24 +725,179 @@ function prepareBotConfigForSaving() { saveConfig(botName, { BotConfig }); } +function prepareGeneratorConfigForSaving() { + var botName = $('#GeneratorName').val(), + BotConfig = globalDefaultConfig; + + if (botName === '') { + swal({ + title: 'Error!', + text: 'You need to enter a name', + type: 'error' + }); + return false; + } + + for (var key in BotConfig) { + if (BotConfig.hasOwnProperty(key)) { + var value = BotConfig[key], + $key = $('#Generator' + key), + keyObj = $key[0]; + + if (typeof keyObj === 'undefined') continue; + + var inputType = keyObj.dataset.type, + $keyValue = $key.val(); + + switch (inputType) { + case 'System.Boolean': + var $keyState = $('#icoGenerator' + key).hasClass('fa-rotate-180') ? false : true; + if ($keyState !== value) BotConfig[key] = $keyState; + break; + + case 'System.String': + if ($keyValue === '') $keyValue = null; + if ($keyValue !== value) BotConfig[key] = $keyValue; + break; + case 'System.UInt64': + if ($keyValue !== BotConfig['s_' + key]) { + delete BotConfig[key]; + BotConfig['s_' + key] = $keyValue; + } + break; + case 'System.Collections.Generic.HashSet`1[System.UInt32]': + if ($keyValue === '') continue; + var items = $keyValue.split(','); + if (items.map(Number) !== value) BotConfig[key] = items.map(Number); + break; + + case 'System.Collections.Generic.Dictionary`2[System.UInt64][ArchiSteamFarm.BotConfig+EPermission]': + var steamUserPermissions = {}, + permissions = [], + lines = $key.val().split('\n'); + + for (var i = 0; i < lines.length; i++) { + if (lines[i] !== '') permissions.push(lines[i].split(':')); + } + + for (var j = 0; j < permissions.length; j++) { + var obj = permissions[j]; + steamUserPermissions[obj[0]] = parseInt(obj[1]); + } + + if (steamUserPermissions !== value) BotConfig[key] = steamUserPermissions; + break; + + default: + if (typeof value === 'object') { + var objItems = $keyValue.split(','); + if (objItems.map(Number) !== value) BotConfig[key] = objItems.map(Number); + } else if (typeof value === 'number') { + var number = Number($keyValue); + if (number !== value) BotConfig[key] = number; + } else { + if ($keyValue !== value) BotConfig[key] = $keyValue; + } + } + } + } + + downloadObjectAsJson(botName, BotConfig); + $('#GeneratorName').val(''); +} + +function prepareGeneratorASFConfigForSaving() { + var botName = $('#GeneratorName').val(), + BotConfig = globalDefaultConfig; + + for (var key in BotConfig) { + if (BotConfig.hasOwnProperty(key)) { + var value = BotConfig[key], + $key = $('#Generator' + key), + keyObj = $key[0]; + + if (typeof keyObj === 'undefined') continue; + + var inputType = keyObj.dataset.type, + $keyValue = $key.val(); + + switch (inputType) { + case 'System.Boolean': + var $keyState = $('#icoGenerator' + key).hasClass('fa-rotate-180') ? false : true; + if ($keyState !== value) BotConfig[key] = $keyState; + break; + + case 'System.String': + if ($keyValue === '') $keyValue = null; + if ($keyValue !== value) BotConfig[key] = $keyValue; + break; + case 'System.UInt64': + if ($keyValue !== BotConfig['s_' + key]) { + delete BotConfig[key]; + BotConfig['s_' + key] = $keyValue; + } + break; + case 'System.Collections.Generic.HashSet`1[System.UInt32]': + if ($keyValue === '') continue; + var items = $keyValue.split(','); + if (items.map(Number) !== value) BotConfig[key] = items.map(Number); + break; + + case 'System.Collections.Generic.HashSet`1[System.String]': + var ipcprefix = [], + lines = $key.val().split('\n'); + + for (var i = 0; i < lines.length; i++) { + if (lines[i] !== '') ipcprefix.push(lines[i]); + } + + if (ipcprefix !== value) BotConfig[key] = ipcprefix; + break; + + default: + if (typeof value === 'object') { + var objItems = $keyValue.split(','); + if (objItems.map(Number) !== value) BotConfig[key] = objItems.map(Number); + } else if (typeof value === 'number') { + var number = Number($keyValue); + if (number !== value) BotConfig[key] = number; + } else { + if ($keyValue !== value) BotConfig[key] = $keyValue; + } + } + } + } + + downloadObjectAsJson(botName, BotConfig); +} + +function downloadObjectAsJson(exportName, exportObj) { + var dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(exportObj)); + var downloadAnchorNode = document.createElement('a'); + downloadAnchorNode.setAttribute("href", dataStr); + downloadAnchorNode.setAttribute("download", exportName + ".json"); + downloadAnchorNode.click(); + downloadAnchorNode.remove(); +} + function saveConfig(botName, config) { $.ajax({ - url: "/Api/Bot/" + encodeURIComponent(botName), - type: "POST", + url: '/Api/Bot/' + encodeURIComponent(botName), + type: 'POST', data: JSON.stringify(config), - contentType: "application/json", + contentType: 'application/json', success: function (data) { swal({ - title: "Success!", - text: "<" + botName + "> and its config file got updated.", - type: "success" + title: 'Success!', + text: '<' + botName + '> and its config file got updated.', + type: 'success' }, function () { location.reload(); }); }, error: function (jqXHR, textStatus, errorThrown) { swal({ - title: "Error!", + title: 'Error!', text: jqXHR.status + ' - ' + errorThrown, - type: "error" + type: 'error' }, function () { location.reload(); }); } }); @@ -584,10 +907,10 @@ function loadBotsDropDown(botName) { var botsDropDownHTML = ''; $.ajax({ - url: "/Api/Bot/ASF", - type: "GET", + url: '/Api/Bot/ASF', + type: 'GET', success: function (data) { - var obj = data["Result"]; + var obj = data['Result']; for (var i = 0; i < obj.length; i++) { var currentBot = obj[i], @@ -598,13 +921,49 @@ function loadBotsDropDown(botName) { botsDropDownHTML += '
  • ' + currentBotName + '
  • '; } - $(".box-title").html("Currently editing: " + botName + ""); - $("#saveButton").data("BotName", botName); - $("#botsDropDown").html(botsDropDownHTML); + $('.box-title').html('Currently editing: ' + botName + ''); + $('#saveButton').data('BotName', botName); + $('#botsDropDown').html(botsDropDownHTML); } }); } -//#endregion Config Changer Page + +function loadModeDropDown(mode) { + var botsDropDownHTML = ''; + + if (mode === 'ASF') { + botsDropDownHTML = '
  • Bot
  • '; + } else if (mode === 'Bot') { + botsDropDownHTML = '
  • ASF
  • '; + } + + $('.box-title').html('Current mode: ' + mode + ''); + $('#modeDropDown').html(botsDropDownHTML); +} + +function loadPageContentGenerator(namespace) { + if (namespace === 'Bot') { + generateConfigHTML('Generator'); + $('#GeneratorName').prop('disabled', false); + $('#GeneratorName').prop('value', ''); + $("#downloadButton").unbind(); + $("#downloadButton").click(function () { prepareGeneratorConfigForSaving(); }); + } else if (namespace === 'ASF') { + generateASFConfigHTML('Generator'); + $('#GeneratorName').prop('disabled', true); + $('#GeneratorName').prop('value', 'ASF'); + $("#downloadButton").unbind(); + $("#downloadButton").click(function () { prepareGeneratorASFConfigForSaving(); }); + } + + $('#configGeneratorTab').ready(function () { + loadDefaultConfigValues(namespace); + }); + $('#downloadButton').show(); + $('#downloadDiv').show(); + $('#saveButton').hide(); +} +//#endregion Config Page //#region Layout $(function () { @@ -634,19 +993,19 @@ $(function () { function changeSetting() { swal({ - title: "Are you sure?", - text: "Your IPC password will be reset!", - type: "warning", + title: 'Are you sure?', + text: 'Your IPC password will be reset!', + type: 'warning', showCancelButton: true, - confirmButtonClass: "btn-danger", - confirmButtonText: "Yes, reset it!", + confirmButtonClass: 'btn-danger', + confirmButtonText: 'Yes, reset it!', closeOnConfirm: false }, function () { - store('IPCPassword', ""); + store('IPCPassword', ''); swal({ - title: "Success!", - text: "Your IPC password has been reset.", - type: "success" + title: 'Success!', + text: 'Your IPC password has been reset.', + type: 'success' }, function () { location.reload(); }); }); } diff --git a/ArchiSteamFarm/www/pages/bots.html b/ArchiSteamFarm/www/pages/bots.html index e9cb017e5..c520e155b 100644 --- a/ArchiSteamFarm/www/pages/bots.html +++ b/ArchiSteamFarm/www/pages/bots.html @@ -106,11 +106,11 @@
    @@ -120,6 +120,7 @@
    @@ -166,33 +167,39 @@ $(function () { 'use strict'; - var tmpShowOnlineBots = get('showOnlineBots'), - tmpShowOfflineBots = get('showOfflineBots'), + var tmpHideOnlineBots = get('hideOnlineBots'), + tmpHideOfflineBots = get('hideOfflineBots'), tmpShowDeleteButton = get('showDeleteButton'), + tmpShowKeyButton = get('showKeyButton'), tmpMultiSelect = get('multiSelect'), currentlySelectedBots = []; - - // Load state of checkboxes - $('.box-tools').ready(function () { - if (tmpShowOnlineBots === 'false') { - $('#chkShowOnlineBots').removeClass('text-olive'); - $('#chkShowOnlineBots').addClass('text-grey'); - $('#iconShowOnlineBots').addClass('fa-rotate-180'); + + $('.box-tools').ready(function () { // Load state of checkboxes + if (tmpHideOnlineBots === 'true') { + $('#chkHideOnlineBots').removeClass('text-grey'); + $('#chkHideOnlineBots').addClass('text-olive'); + $('#iconHideOnlineBots').removeClass('fa-rotate-180'); } - if (tmpShowOfflineBots === 'false') { - $('#chkShowOfflineBots').removeClass('text-olive'); - $('#chkShowOfflineBots').addClass('text-grey'); - $('#iconShowOfflineBots').addClass('fa-rotate-180'); + if (tmpHideOfflineBots === 'true') { + $('#chkHideOfflineBots').removeClass('text-grey'); + $('#chkHideOfflineBots').addClass('text-olive'); + $('#iconHideOfflineBots').removeClass('fa-rotate-180'); } + if (tmpHideOnlineBots !== 'true' || tmpHideOfflineBots !== 'true') loadPageContent(); + if (tmpShowDeleteButton === 'true') { $('#chkShowDeleteButton').removeClass('text-grey'); $('#chkShowDeleteButton').addClass('text-olive'); $('#iconShowDeleteButton').removeClass('fa-rotate-180'); } - if (tmpShowOnlineBots !== 'false' || tmpShowOfflineBots !== 'false') loadPageContent(); + if (tmpShowKeyButton === 'true') { + $('#chkShowKeyButton').removeClass('text-grey'); + $('#chkShowKeyButton').addClass('text-olive'); + $('#iconShowKeyButton').removeClass('fa-rotate-180'); + } if (tmpMultiSelect === 'true') { $('#iconMultiSelect').removeClass('fa-square'); @@ -222,32 +229,32 @@ } }); - $('#chkShowOnlineBots').click(function () { - if ($('#iconShowOnlineBots').hasClass('fa-rotate-180')) { - $('#iconShowOnlineBots').removeClass('fa-rotate-180'); - $('#chkShowOnlineBots').removeClass('text-grey'); - $('#chkShowOnlineBots').addClass('text-olive'); - store('showOnlineBots', true); + $('#chkHideOnlineBots').click(function () { + if ($('#iconHideOnlineBots').hasClass('fa-rotate-180')) { + $('#iconHideOnlineBots').removeClass('fa-rotate-180'); + $('#chkHideOnlineBots').removeClass('text-grey'); + $('#chkHideOnlineBots').addClass('text-olive'); + store('hideOnlineBots', true); } else { - $('#iconShowOnlineBots').addClass('fa-rotate-180'); - $('#chkShowOnlineBots').removeClass('text-olive'); - $('#chkShowOnlineBots').addClass('text-grey'); - store('showOnlineBots', false); + $('#iconHideOnlineBots').addClass('fa-rotate-180'); + $('#chkHideOnlineBots').removeClass('text-olive'); + $('#chkHideOnlineBots').addClass('text-grey'); + store('hideOnlineBots', false); } loadPageContent(); }); - $('#chkShowOfflineBots').click(function () { - if ($('#iconShowOfflineBots').hasClass('fa-rotate-180')) { - $('#iconShowOfflineBots').removeClass('fa-rotate-180'); - $('#chkShowOfflineBots').removeClass('text-grey'); - $('#chkShowOfflineBots').addClass('text-olive'); - store('showOfflineBots', true); + $('#chkHideOfflineBots').click(function () { + if ($('#iconHideOfflineBots').hasClass('fa-rotate-180')) { + $('#iconHideOfflineBots').removeClass('fa-rotate-180'); + $('#chkHideOfflineBots').removeClass('text-grey'); + $('#chkHideOfflineBots').addClass('text-olive'); + store('hideOfflineBots', true); } else { - $('#iconShowOfflineBots').addClass('fa-rotate-180'); - $('#chkShowOfflineBots').removeClass('text-olive'); - $('#chkShowOfflineBots').addClass('text-grey'); - store('showOfflineBots', false); + $('#iconHideOfflineBots').addClass('fa-rotate-180'); + $('#chkHideOfflineBots').removeClass('text-olive'); + $('#chkHideOfflineBots').addClass('text-grey'); + store('hideOfflineBots', false); } loadPageContent(); }); @@ -299,29 +306,44 @@ loadPageContent(); }); - function loadPageContent() { - var tmpShowOnlineBots = get('showOnlineBots'), - tmpShowOfflineBots = get('showOfflineBots'), - tmpShowDeleteButton = get('showDeleteButton'); + $('#chkShowKeyButton').click(function () { + if ($('#iconShowKeyButton').hasClass('fa-rotate-180')) { + $('#iconShowKeyButton').removeClass('fa-rotate-180'); + $('#chkShowKeyButton').removeClass('text-grey'); + $('#chkShowKeyButton').addClass('text-olive'); + store('showKeyButton', true); + } else { + $('#iconShowKeyButton').addClass('fa-rotate-180'); + $('#chkShowKeyButton').removeClass('text-olive'); + $('#chkShowKeyButton').addClass('text-grey'); + store('showKeyButton', false); + } + loadPageContent(); + }); - // Clear page content first - $("#totalBotOverview").empty(); - $("#botRow").empty(); + function loadPageContent() { + var tmpHideOnlineBots = get('hideOnlineBots'), + tmpHideOfflineBots = get('hideOfflineBots'), + tmpShowDeleteButton = get('showDeleteButton'), + tmpShowKeyButton = get('showKeyButton'); + + $('#totalBotOverview').empty(); // Clear page content + $('#botRow').empty(); // Clear page content $.ajax({ - url: "/Api/Bot/ASF", - type: "GET", + url: '/Api/Bot/ASF', + type: 'GET', success: function (data) { - var json = data["Result"], - steamAvatarBaseURL = "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/", - steamGameBaseURL = "http://cdn.edgecast.steamstatic.com/steam/apps/", - deleteBotHTML = "", + var json = data['Result'], + steamAvatarBaseURL = 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/', + steamGameBaseURL = 'http://cdn.edgecast.steamstatic.com/steam/apps/', totalGamesRemaining = 0, - totalTimeRemaining = "00:00:00", + totalTimeRemaining = '00:00:00', totalCardsRemaining = 0, farmingIsActive = false; - if (tmpShowDeleteButton === 'true') deleteBotHTML = ''; + var deleteBotHTML = tmpShowDeleteButton === 'true' ? '' : ''; + var redeemGamesHTML = tmpShowKeyButton === 'true' ? '' : ''; for (var i = 0; i < json.length; i++) { var obj = json[i], @@ -331,44 +353,44 @@ KeepRunning = obj.KeepRunning, SteamID = obj.SteamID, Paused = obj.CardsFarmer.Paused, - boxColorHTML = "", - avatarHTML = "", - startOrStopHTML = "", - pauseOrResumeHTML = "", - expandBoxHTML = "", - allGamesHTML = "", - boxBodyHTML = ""; + boxColorHTML = '', + avatarHTML = '', + startOrStopHTML = '', + pauseOrResumeHTML = '', + expandBoxHTML = '', + allGamesHTML = '', + boxBodyHTML = ''; if (AvatarHash) { var folder = AvatarHash.substring(0, 2); - avatarHTML = steamAvatarBaseURL + folder + "/" + AvatarHash + ".jpg"; + avatarHTML = steamAvatarBaseURL + folder + '/' + AvatarHash + '.jpg'; } else { - avatarHTML = steamAvatarBaseURL + "fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb.jpg"; + avatarHTML = steamAvatarBaseURL + 'fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb.jpg'; } if (KeepRunning === false) { // Bot is offline - if (tmpShowOfflineBots === 'false') continue; - boxColorHTML = "box-gray"; + if (tmpHideOfflineBots === 'true') continue; + boxColorHTML = 'box-gray'; startOrStopHTML = ''; } else { // Bot is idling - if (tmpShowOnlineBots === 'false') continue; - boxColorHTML = "box-warning"; + if (tmpHideOnlineBots === 'true') continue; + boxColorHTML = 'box-warning'; startOrStopHTML = ''; var TimeRemaining = obj.CardsFarmer.TimeRemaining; if (SteamID === 0) { // Bot is not connected to steam - boxColorHTML = "box-danger"; + boxColorHTML = 'box-danger'; } else { // Bot is connected to steam - if (TimeRemaining !== "00:00:00") { // Bot is farming + if (TimeRemaining !== '00:00:00') { // Bot is farming var GamesToFarm = obj.CardsFarmer.GamesToFarm, CurrentGamesFarming = obj.CardsFarmer.CurrentGamesFarming, allGamesRemainingName = [], allGamesFarmingAppID = [], allCardsRemaining = 0; - farmingIsActive = true; //at least one bot is farming - boxColorHTML = "box-success"; + farmingIsActive = true; // At least one bot is farming + boxColorHTML = 'box-success'; for (var j = 0; j < GamesToFarm.length; j++) { totalCardsRemaining = totalCardsRemaining + GamesToFarm[j].CardsRemaining; @@ -392,13 +414,13 @@ } else { if (allGamesFarmingAppID.length === 1) { var value = allGamesFarmingAppID; - allGamesHTML = ''; // fill alt="" with gameName - } else { // Multiple game farming + allGamesHTML = ''; // ToDo: Fill alt="" with gameName + } else { // Multiple game farming is active allGamesHTML = ''; @@ -408,7 +430,7 @@ allGamesHTML = '

    Bot is currently being used.

    '; } - TimeRemaining = new Date("1970-01-01T" + TimeRemaining + "Z").getTime(); + TimeRemaining = new Date('1970-01-01T' + TimeRemaining + 'Z').getTime(); boxBodyHTML = '
    ' + '
    ' @@ -431,7 +453,7 @@ } } - $("#botRow").append('
    ' + $('#botRow').append('
    ' + '
    ' + '
    ' + '' @@ -439,6 +461,7 @@ + '
    ' + startOrStopHTML + pauseOrResumeHTML + + redeemGamesHTML + deleteBotHTML + expandBoxHTML + '
    ' @@ -456,13 +479,11 @@ .on('expanded.boxwidget', function (BotName) { var botCarousel = $('.games-carousel-' + BotName); - // Checks if Slick was already initialized... - if ($(botCarousel).hasClass('slick-initialized')) { - // Slick is set up, so just resume the animation. - $(botCarousel).slick('slickPlay'); + + if ($(botCarousel).hasClass('slick-initialized')) { // Check if Slick was already initialized + $(botCarousel).slick('slickPlay'); // Slick is set up, so just resume the animation } else { - // Sets up Slick for the first time. - $(botCarousel).slick({ + $(botCarousel).slick({ // Set up Slick for the first time. slidesToShow: 1, draggable: true, autoplay: true, @@ -473,8 +494,7 @@ } }.bind(null, BotName)) .on('collapsed.boxwidget', function (BotName) { - // Just pause Slick's animation and collapse the menu. - $('.games-carousel-' + BotName).slick('slickPause'); + $('.games-carousel-' + BotName).slick('slickPause'); // Pause Slick's animation and collapse the menu }.bind(null, BotName) ); @@ -487,29 +507,30 @@ case 'startBot': $botBox.append('
    '); $.ajax({ - url: "/Api/Command/start " + encodeURIComponent(BotName), - type: "GET", + url: '/Api/Command/start ' + encodeURIComponent(BotName), + type: 'GET', success: function (data) { $('.overlay').remove(); swal({ - title: "Success!", - text: "<" + BotName + "> has been started.", - type: "success" + title: 'Success!', + text: '<' + BotName + '> has been started.', + type: 'success' }, function () { location.reload(); }); } }); break; + case 'stopBot': $botBox.append('
    '); $.ajax({ - url: "/Api/Command/stop " + encodeURIComponent(BotName), - type: "GET", + url: '/Api/Command/stop ' + encodeURIComponent(BotName), + type: 'GET', success: function (data) { $('.overlay').remove(); swal({ - title: "Success!", - text: "<" + BotName + "> has been stopped.", - type: "success" + title: 'Success!', + text: '<' + BotName + '> has been stopped.', + type: 'success' }, function () { location.reload(); }); } }); @@ -518,14 +539,14 @@ case 'pauseBot': $botBox.append('
    '); $.ajax({ - url: "/Api/Command/pause " + encodeURIComponent(BotName), - type: "GET", + url: '/Api/Command/pause ' + encodeURIComponent(BotName), + type: 'GET', success: function (data) { $('.overlay').remove(); swal({ - title: "Success!", - text: "<" + BotName + "> has been paused.", - type: "success" + title: 'Success!', + text: '<' + BotName + '> has been paused.', + type: 'success' }, function () { location.reload(); }); } }); @@ -534,14 +555,14 @@ case 'resumeBot': $botBox.append('
    '); $.ajax({ - url: "/Api/Command/resume " + encodeURIComponent(BotName), - type: "GET", + url: '/Api/Command/resume ' + encodeURIComponent(BotName), + type: 'GET', success: function (data) { $('.overlay').remove(); swal({ - title: "Success!", - text: "<" + BotName + "> has been resumed.", - type: "success" + title: 'Success!', + text: '<' + BotName + '> has been resumed.', + type: 'success' }, function () { location.reload(); }); } }); @@ -550,25 +571,25 @@ case 'deleteBot': $botBox.append('
    '); swal({ - title: "Are you sure?", - text: "You will not be able to recover any bot files!", - type: "warning", + title: 'Are you sure?', + text: 'You will not be able to recover any bot files!', + type: 'warning', showCancelButton: true, - confirmButtonClass: "btn-danger", - confirmButtonText: "Yes, delete bot!", + confirmButtonClass: 'btn-danger', + confirmButtonText: 'Yes, delete bot!', closeOnConfirm: false, showLoaderOnConfirm: true }, function (isConfirm) { if (isConfirm) { $.ajax({ - url: "/Api/Bot/" + encodeURIComponent(BotName), - type: "DELETE", + url: '/Api/Bot/' + encodeURIComponent(BotName), + type: 'DELETE', success: function (data) { $('.overlay').remove(); swal({ - title: "Success!", - text: "<" + BotName + "> and all related files have been deleted.", - type: "success" + title: 'Success!', + text: '<' + BotName + '> and all related files have been deleted.', + type: 'success' }, function () { location.reload(); }); } }); @@ -577,13 +598,77 @@ } }); break; + + case 'redeemGames': + $botBox.append('
    '); + swal({ + title: 'Enter keys!', + text: '

    Syntax: gameName{Delimeter}cd-key

    ' + + '' + + '
    ' + + 'Delimeter' + + '' + + '
    ', + html: true, + showCancelButton: true, + confirmButtonClass: 'btn-success', + confirmButtonText: 'Add keys!', + closeOnConfirm: false, + showLoaderOnConfirm: true + }, function (isConfirm) { + if (isConfirm === false) { + $('.overlay').remove(); + return false; + } + var val = $('#gamesToRedeemInBackground').val(); + if (val === '') return false; + + $('.overlay').remove(); + + var _gamesToRedeemInBackground = {}, + gamesAndKeys = [], + lines = val.split('\n'), + delimeter = $('#delimeter').val(); + + for (var i = 0; i < lines.length; i++) { + if (lines[i] !== '') gamesAndKeys.push(lines[i].split(delimeter)); + } + + for (var j = 0; j < gamesAndKeys.length; j++) { + var obj = gamesAndKeys[j]; + _gamesToRedeemInBackground[obj[0]] = obj[1]; + } + + var ajaxData = { GamesToRedeemInBackground: _gamesToRedeemInBackground}; + + $.ajax({ + url: '/Api/GamesToRedeemInBackground/' + encodeURIComponent(BotName), + type: 'POST', + data: JSON.stringify(ajaxData), + contentType: 'application/json', + success: function (data) { + swal({ + title: 'Success!', + text: lines.length + ' Keys have been added to <' + BotName + '> background redeemer.', + type: 'success' + }, function () { location.reload(); }); + }, + error: function (jqXHR, textStatus, errorThrown) { + swal({ + title: 'Error!', + text: jqXHR.status + ' - ' + errorThrown, + type: 'error' + }, function () { location.reload(); }); + } + }); + }); + break; } }) } - - // add info boxes if at least one bot is farming - if (farmingIsActive) { - $("#totalBotOverview").html('
    ' + + if (farmingIsActive) { // Add info boxes if at least one bot is farming + $('#totalBotOverview').html('
    ' + '
    ' + '' + '
    ' @@ -611,11 +696,11 @@ + '
    ' + '
    '); - totalTimeRemaining = new Date("1970-01-01T" + totalTimeRemaining + "Z").getTime(); + totalTimeRemaining = new Date('1970-01-01T' + totalTimeRemaining + 'Z').getTime(); - $("#totalGamesRemaining").text(totalGamesRemaining); - $("#totalTimeRemaining").text(humanizeDuration(totalTimeRemaining)); - $("#totalCardsRemaining").text(totalCardsRemaining); + $('#totalGamesRemaining').text(totalGamesRemaining); + $('#totalTimeRemaining').text(humanizeDuration(totalTimeRemaining)); + $('#totalCardsRemaining').text(totalCardsRemaining); } } }); diff --git a/ArchiSteamFarm/www/pages/command.html b/ArchiSteamFarm/www/pages/command.html index bb5083ce4..479738e24 100644 --- a/ArchiSteamFarm/www/pages/command.html +++ b/ArchiSteamFarm/www/pages/command.html @@ -201,11 +201,11 @@ $commandInput.focus(); - $("#sendCommand").click(function (e) { + $('#sendCommand').click(function (e) { var cmd = $commandInput.val(); keyCount = 0; - if (typeof prevCommand[prevCommand.length - 1] === "undefined") { + if (typeof prevCommand[prevCommand.length - 1] === 'undefined') { prevCommand.push(cmd); } else if (prevCommand[prevCommand.length - 1] !== cmd) { prevCommand.push(cmd); @@ -219,11 +219,11 @@ }); $(document).keydown(function (e) { - if (e.which == 38 && $commandInput.is(":focus")) { + if (e.which == 38 && $commandInput.is(':focus')) { if (prevCommand.length > keyCount) keyCount++; var index = prevCommand.length - keyCount; $commandInput.val(prevCommand[index]); - } else if (e.which == 40 && $commandInput.is(":focus")) { + } else if (e.which == 40 && $commandInput.is(':focus')) { if (keyCount > 0) keyCount--; var index = prevCommand.length - keyCount; $commandInput.val(prevCommand[index]); @@ -231,7 +231,7 @@ }); $(document).keypress(function (e) { - if (e.which == 13 && $cmdInput.val() !== "") $("#sendCommand").click(); + if (e.which == 13 && $cmdInput.val() !== "") $('#sendCommand').click(); }); $('.box-tools').ready(function () { @@ -325,10 +325,10 @@ $('.box-footer').ready(function () { $.ajax({ // Fill drop down with all bots + ASF - url: "/Api/Bot/ASF", - type: "GET", + url: '/Api/Bot/ASF', + type: 'GET', success: function (data) { - var json = data["Result"]; + var json = data['Result']; $botsDropDown.append('
  • ASF
  • '); @@ -347,7 +347,7 @@ $('#' + cmd) .mouseenter(function () { - $commandInput.attr('placeholder', myCommands[this.id]); // Find a better solution for where to display description. + $commandInput.attr('placeholder', myCommands[this.id]); // ToDo: Find a better solution for where to display description }) .mouseleave(function () { $commandInput.attr('placeholder', 'Type command...'); diff --git a/ArchiSteamFarm/www/pages/config.html b/ArchiSteamFarm/www/pages/config.html index 36ee64640..086d32ce9 100644 --- a/ArchiSteamFarm/www/pages/config.html +++ b/ArchiSteamFarm/www/pages/config.html @@ -104,17 +104,19 @@
    -
    -
    -

    Not implemented

    -

    This feature has not been implemented yet.

    -
    -
    +
    @@ -150,44 +152,64 @@ $('#configChangerTab').ready(function () { $('#downloadButton').hide(); - generateConfigChangerHTML(); + $('#downloadDiv').hide(); + + generateConfigHTML('Changer'); $.ajax({ - url: "/Api/Bot/ASF", - type: "GET", + url: '/Api/Bot/ASF', + type: 'GET', success: function (data) { - var json = data["Result"]; + var json = data['Result']; loadConfigValuesForBot(json[0].BotName); } }); }); $('#generatorTabButton').click(function (e) { - $('#downloadButton').show(); - $('#saveButton').hide(); + loadPageContentGenerator('Bot'); + e.preventDefault(); }); $('#changerTabButton').click(function (e) { + generateConfigHTML('Changer'); + $('#configChangerTab').ready(function () { + $.ajax({ + url: '/Api/Bot/ASF', + type: 'GET', + success: function (data) { + var json = data['Result']; + loadConfigValuesForBot(json[0].BotName); + } + }); + }); $('#downloadButton').hide(); + $('#downloadDiv').hide(); $('#saveButton').show(); e.preventDefault(); }); - $("#saveButton").click(function (e) { + $('#saveButton').click(function (e) { swal({ - title: "Are you sure?", - text: "The config will be updated and the bot will be restarted!", - type: "warning", + 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!", + confirmButtonClass: 'btn-danger', + confirmButtonText: 'Yes, update config!', closeOnConfirm: false, showLoaderOnConfirm: true }, function () { prepareBotConfigForSaving(); }); e.preventDefault(); }); + + $('#downloadButton').click(function (e) { + prepareGeneratorConfigForSaving(); + + e.preventDefault(); + }); }) diff --git a/ArchiSteamFarm/www/pages/log.html b/ArchiSteamFarm/www/pages/log.html index f326463c5..6e9034b92 100644 --- a/ArchiSteamFarm/www/pages/log.html +++ b/ArchiSteamFarm/www/pages/log.html @@ -150,29 +150,28 @@ startWebSocket(); function startWebSocket() { - if (!"WebSocket" in window) window.alert('Please use a modern browser to properly view ASF GUI!') + if (!'WebSocket' in window) window.alert('Please use a modern browser to properly view ASF GUI!') var loc = window.location, - new_uri = (loc.protocol === "https:") ? "wss:" : "ws:"; + new_uri = (loc.protocol === 'https:') ? 'wss:' : 'ws:'; - new_uri += "//" + loc.host + "/Api/Log?password=" + encodeURIComponent(IPCPassword); + new_uri += '//' + loc.host + '/Api/Log?password=' + encodeURIComponent(IPCPassword); ws = new WebSocket(new_uri); $('.overlay').remove(); - $('.box-content-log').text(""); //Clear log + $('.box-content-log').text(''); // Clear log ws.onmessage = function (evt) { - var msg = JSON.parse(evt.data)["Result"] + "\n"; + var msg = JSON.parse(evt.data)['Result'] + '\n'; $('.box-content-log').append(msg); - $(".box-content-log").stop().animate({ scrollTop: $(".box-content-log")[0].scrollHeight }, 1000); + $('.box-content-log').stop().animate({ scrollTop: $('.box-content-log')[0].scrollHeight }, 1000); }; ws.onclose = function (event) { - if (event.code !== 1000) { - // code 1000 means that the connection was closed normally + if (event.code !== 1000) { // Code 1000 means that the connection was closed normally swal({ - title: "Error!", + title: 'Error!', text: event.code + ' - ' + event.reason, - type: "error" + type: 'error' }, function () { swal.close(); }); } }