newbie 1,722 09/08/2018 08:27 AM угуvar timer = $('#elTimer'); var timerTime = timer.html(); var counter = timerTime; setInterval(function() { if (counter < 0) { counter = timerTime; } timer.html(counter); counter -= 1; }, 1000);<span id="elTimer">10</span> Share this post Link to post
TemKa_SD 9 09/08/2018 09:58 AM Разве так правильно? $(document).ready(function() { var gamenames = document.querySelectorAll('.copy'); var table = document.querySelector('#gamelistTable'); var names = new Clipboard(gamenames); var date = new Date(); date.setTime(date.getTime() + (365 * 86400000)); setInterval(function() { var updateUrl = table.getAttribute('data-update-url'); var val = document.querySelector('input[name="only_lobby"]').checked; updateUrl += '&only_lobby=' + val; var botid_list = ''; $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list += $(this).val() + ','; }); /*console.log(botid_list);*/ updateUrl += '&botid_list=' + botid_list; console.log(updateUrl); ips.getAjax()(updateUrl).done(function (data) { table.querySelector('tbody').innerHTML = data; gamenames = document.querySelectorAll('.copy'); names.destroy(); names = new Clipboard(gamenames); }); }, 5000); }); $('#only_lobby').change(function() { if(this.checked) { var date = new Date(); date.setTime(date.getTime() + (365 * 86400000)); ips.utils.cookie.set('RunningGames_only_lobby', true, date.toUTCString()); } else { ips.utils.cookie.unset('RunningGames_only_lobby'); } }); $('input:checkbox[name="botid[]"]').change(function() { if(this.checked) { var botid_list = ''; var date = new Date(); date.setTime(date.getTime() + (365 * 86400000)); $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list += $(this).val() + ','; }); ips.utils.cookie.set('RunningGames_botid', botid_list += $(this).val() + ',', date.toUTCString()); } }); Share this post Link to post
newbie 1,722 09/08/2018 11:06 AM var val = document.querySelector('input[name="only_lobby"]').checked; updateUrl += '&only_lobby=' + val; var botid_list = ''; $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list += $(this).val() + ','; }); /*console.log(botid_list);*/ updateUrl += '&botid_list=' + botid_list;Это Вам зачем, если Вы не используете параметры в php? if(this.checked) { var botid_list = ''; var date = new Date(); date.setTime(date.getTime() + (365 * 86400000)); $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list += $(this).val() + ','; }); ips.utils.cookie.set('RunningGames_botid', botid_list += $(this).val() + ',', date.toUTCString()); }Здесь Вы проверяете только одно состояние чекбокса $('input:checkbox[name="botid[]"]').change(function() { var botid_list = []; $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list.push($(this).val()); }); ips.utils.cookie.set('RunningGames_botid', botid_list.join(','), date.toUTCString()); }); Share this post Link to post
newbie 1,722 09/08/2018 11:54 AM Ваш вопрос про PHP не понял. Зачем Вы передаете параметры index.php?app=sharedstats&module=stats&controller=RunningGames&do=ajax&only_lobby=true&botid_list=18,17,16,15,14,13,11,10,4,3,если проверяете не их, а куки?ajax меняете\IPS\Output::i()->sendOutput( \IPS\Theme::i()->getTemplate('stats', 'sharedstats')->runningGamesList($games), 200 );на\IPS\Output::i()->json(array('html' => \IPS\Theme::i()->getTemplate('stats', 'sharedstats')->runningGamesList($games), 'games' => 5, 'players' => 10));+добавить id'шники для Total Games и Total Players<div class="ipsType_minorHeading">Total Games: <span id="elTotalGames">10</span></div> <div class="ipsType_minorHeading">Total Players: <span id="elTotalPlayers">28</span></div>+ js$(document).ready(function() { var table = $('#gamelistTable'); var tableBody = table.find('tbody'); var names = new Clipboard('.copy'); var updateUrl = table.attr('data-update-url'); var elTotalGames = $('#elTotalGames'); var elTotalPlayers = $('#elTotalPlayers'); var date = new Date(); date.setTime(date.getTime() + (365 * 86400000)); setInterval(function() { ips.getAjax()(updateUrl).done(function (response) { tableBody.html(response['html']); elTotalGames.html(response['games']); elTotalPlayers.html(response['players']); }); }, 5000); $('#only_lobby').change(function() { if(this.checked) { ips.utils.cookie.set('RunningGames_only_lobby', true, date.toUTCString()); } else { ips.utils.cookie.unset('RunningGames_only_lobby'); } }); $('input:checkbox[name="botid[]"]').change(function() { var botid_list = []; $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list.push($(this).val()); }); ips.utils.cookie.set('RunningGames_botid', botid_list.join(','), date.toUTCString()); }); }); Share this post Link to post
TemKa_SD 9 09/08/2018 07:56 PM Спасибо большое за помощь, я вам памятник при жизни поставлю. Дело в том, что я не знаю программирования, только HTML и CSS. Со всем этим делом вожусь порядка 10 лет, начинал еще с юкоз. Выучить программирования так и не было времени, пилил свои проекты, как-то зарабатывал на жизнь... Чтением кода владею, но с написанием проблемы, вот пытаюсь что-то освоить, внимательно изучаю всю вашу информацию, я вам сильно надоел? Share this post Link to post
TemKa_SD 9 09/08/2018 08:13 PM (edited) Не работает ((( С куками всё супер, с обновлением на AJAX что-то. Тамймер на секунду опаздывает почему-то. $(document).ready(function() { var table = $('#gamelistTable'); var tableBody = table.find('tbody'); var names = new Clipboard('.copy'); var updateUrl = table.attr('data-update-url'); var elTotalGames = $('#elTotalGames'); var elTotalPlayers = $('#elTotalPlayers'); var date = new Date(); var timer = $('#elTimer'); var timerTime = timer.html(); var counter = timerTime; date.setTime(date.getTime() + (365 * 86400000)); setInterval(function() { ips.getAjax()(updateUrl).done(function (response) { tableBody.html(response['html']); elTotalGames.html(response['games']); elTotalPlayers.html(response['players']); }); }, 5000); setInterval(function() { if (counter < 0) { counter = timerTime; } timer.html(counter); counter -= 1; }, 1000); $('#only_lobby').change(function() { if(this.checked) { ips.utils.cookie.set('RunningGames_only_lobby', true, date.toUTCString()); } else { ips.utils.cookie.unset('RunningGames_only_lobby'); } }); $('input:checkbox[name="botid[]"]').change(function() { var botid_list = []; $('input:checkbox[name="botid[]"]:checked').each(function(){ botid_list.push($(this).val()); }); ips.utils.cookie.set('RunningGames_botid', botid_list.join(','), date.toUTCString()); }); }); Edited September 8, 2018 by TemKa_SD Share this post Link to post
newbie 1,722 09/09/2018 06:20 AM Используйте один setInterval с 1000. Если значение счетчика равно 0, делайте ajax-запрос Share this post Link to post
TemKa_SD 9 09/09/2018 06:40 AM Как правильней? setInterval(function() { if (counter == 0) { ips.getAjax()(updateUrl).done(function (response) { tableBody.html(response['html']); elTotalGames.html(response['games']); elTotalPlayers.html(response['players']); }); } if (counter < 0) { counter = timerTime; } timer.html(counter); counter -= 1; }, 1000); setInterval(function() { if (counter <= 0) { ips.getAjax()(updateUrl).done(function (response) { tableBody.html(response['html']); elTotalGames.html(response['games']); elTotalPlayers.html(response['players']); }); counter = timerTime; } timer.html(counter); counter -= 1; }, 1000); Share this post Link to post
newbie 1,722 09/09/2018 07:11 AM var ajaxObj = null; setInterval(function() { if (counter === 0) { if (ajaxObj != null) { return; } timer.html('Loading...'); ajaxObj = ips.getAjax()(updateUrl) .done(function (response) { tableBody.html(response['html']); elTotalGames.html(response['games']); elTotalPlayers.html(response['players']); counter = timerTime; ajaxObj = null; }) .fail(function() { window.location.reload(); }); } else { timer.html(counter); counter -= 1; } }, 1000); Share this post Link to post
TemKa_SD 9 09/09/2018 07:17 AM Спасибо, всё супер. У меня сломалась выборка по фильтру после обновления на AJAX. Share this post Link to post
newbie 1,722 09/09/2018 07:22 AM У меня сломалась выборка по фильтру после обновления на AJAX. Значит, где-то что-то не так. Share this post Link to post
TemKa_SD 9 09/09/2018 08:41 AM Я сделал такой вывод: \IPS\Output::i()->json(array('html' => \IPS\Theme::i()->getTemplate('stats', 'sharedstats')->runningGamesList($games), 'games' => $games, 'players' => $totalGames)); оно работает, но я не пойму почему. Если вставить любую другую переменную, например: \IPS\Output::i()->json(array('html' => \IPS\Theme::i()->getTemplate('stats', 'sharedstats')->runningGamesList($games), 'games' => $gamesss, 'players' => $totalGamesss)); оно тоже работает. Share this post Link to post
newbie 1,722 09/09/2018 08:53 AM 'games' => $games, 'players' => $totalGamesА тут вообще что?Судя по runningGamesList($games), $games - это массив со списком игр.Так зачем Вы его передаете в 'games' => $games'games' => $games должно быть кол-во игр'players' => $totalGames должно быть кол-во игроков Share this post Link to post
TemKa_SD 9 09/09/2018 09:01 AM Я просто для теста указал. Почему вариант который вы скинули с цифрами 5 и 10 - не работает, а мой с непонятными переменными работает? Share this post Link to post